llvm-6502/lib
Chandler Carruth 73527d30cd Fix a stunning oversight in the inline cost analysis. It was never
propagating one of the values it simplified to a constant across
a myriad of instructions. Notably, ptrtoint instructions when we had
a constant pointer (say, 0) didn't propagate that, blocking a massive
number of down-stream optimizations.

This was uncovered when investigating why we fail to inline and delete
the boilerplate in:

  void f() {
    std::vector<int> v;
    v.push_back(1);
  }

It turns out most of the efforts I've made thus far to improve the
analysis weren't making it far purely because of this. After this is
fixed, the store-to-load forwarding patch enables LLVM to optimize the
above to an empty function. We still can't nuke a second push_back, but
for different reasons.

There is a very real chance this will cause somewhat noticable changes
in inlining behavior, so please let me know if you see regressions (or
improvements!) because of this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171196 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-28 14:43:42 +00:00
..
Analysis Fix a stunning oversight in the inline cost analysis. It was never 2012-12-28 14:43:42 +00:00
Archive
AsmParser
Bitcode
CodeGen Refactor DAGCombinerInfo. Change the different booleans that indicate if we are before or after different runs of DAGCo, with the CombineLevel enum. 2012-12-27 06:47:41 +00:00
DebugInfo Right now all of the relocations are 32-bit dwarf, and the relocation 2012-12-27 01:07:07 +00:00
ExecutionEngine Removed "static" from "__jit_debug_descriptor" because "static" adds C++ mangling prefix to this symbol. 2012-12-24 09:42:27 +00:00
Linker
MC
Object
Option
Support Fix whitespace. No functionality change. 2012-12-25 06:13:25 +00:00
TableGen Update tablegen parser to allow defm names to start with #NAME. 2012-12-27 06:32:52 +00:00
Target CostModel: initial checkin for code that estimates the cost of special shuffles. 2012-12-28 08:19:03 +00:00
Transforms Add proper support for -fsanitize-blacklist= flag for TSan and MSan. LLVM part. 2012-12-28 09:30:44 +00:00
VMCore 80 columns. No functionality change. 2012-12-26 22:00:49 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile