Skip to content
  1. Dec 31, 2012
  2. Dec 30, 2012
  3. Dec 28, 2012
    • Chandler Carruth's avatar
      Fix a stunning oversight in the inline cost analysis. It was never · 86ed5308
      Chandler Carruth authored
      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.
      
      llvm-svn: 171196
      86ed5308
    • Chandler Carruth's avatar
      Teach the inline cost analysis about calls that can be simplified and · 753e21d0
      Chandler Carruth authored
      how to propagate constants through insert and extract value
      instructions.
      
      With the recent improvements to instsimplify, this allows inline cost
      analysis to constant fold through intrinsic functions, including notably
      the with.overflow intrinsic math routines which often show up inside of
      STL abstractions. This is yet another piece in the puzzle of breaking
      down the code for:
      
        void f() {
          std::vector<int> v;
          v.push_back(1);
        }
      
      But it still isn't enough. There are a pile of bugs in inline cost still
      blocking this.
      
      llvm-svn: 171195
      753e21d0
    • Chandler Carruth's avatar
      Teach instsimplify to use the constant folder where appropriate for · f6182155
      Chandler Carruth authored
      constant folding calls. Add the initial tests for this which show that
      now instsimplify can simplify blindingly obvious code patterns expressed
      with both intrinsics and library calls.
      
      llvm-svn: 171194
      f6182155
    • Nadav Rotem's avatar
      AVX: Move the ZEXT/ANYEXT DAGCo optimizations to the lowering of these... · 3da9ac72
      Nadav Rotem authored
      AVX: Move the ZEXT/ANYEXT DAGCo optimizations to the lowering of these optimizations. The old test cases still cover all of these lowering/optimizations. The single change that we have is that now anyext does not need to zero a register, because it does not use the exact code path as the zero_extend.
      
      llvm-svn: 171178
      3da9ac72
  4. Dec 27, 2012
  5. Dec 26, 2012
  6. Dec 25, 2012
  7. Dec 24, 2012
  8. Dec 23, 2012
Loading