Skip to content
  1. Jul 24, 2012
  2. Jul 23, 2012
  3. Jul 22, 2012
  4. Jul 21, 2012
  5. Jul 20, 2012
  6. Jul 19, 2012
  7. Jul 18, 2012
    • Andrew Trick's avatar
      indvars: drive by heuristics fix. · 0d07dfcd
      Andrew Trick authored
      Minor oversight noticed by inspection. Sorry no unit test.
      
      llvm-svn: 160422
      0d07dfcd
    • Andrew Trick's avatar
      indvars: Linear function test replace should avoid reusing undef. · c0872662
      Andrew Trick authored
      Fixes PR13371: indvars pass incorrectly substitutes 'undef' values.
      
      I do not like this fix. It's needed until/unless the meaning of undef
      changes. It attempts to be complete according to the IR spec, but I
      don't have much confidence in the implementation given the difficulty
      testing undefined behavior. Worse, this invalidates some of my
      hard-fought work on indvars and LSR to optimize pointer induction
      variables. It results benchmark regressions, which I'll track
      internally. On x86_64 no LTO I see:
      
      -3% huffbench
      -3% 400.perlbench
      -8% fhourstones
      
      My only suggestion for recovering is to change the meaning of
      undef. If we could trust an arbitrary instruction to produce a some
      real value that can be manipulated (e.g. incremented) according to
      non-undef rules, then this case could be easily handled with SCEV.
      
      llvm-svn: 160421
      c0872662
  8. Jul 17, 2012
  9. Jul 16, 2012
  10. Jul 14, 2012
  11. Jul 13, 2012
  12. Jul 12, 2012
    • Evan Cheng's avatar
      Instcombine was transforming: · 493eb32f
      Evan Cheng authored
        %shr = lshr i64 %key, 3
        %0 = load i64* %val, align 8
        %sub = add i64 %0, -1
        %and = and i64 %sub, %shr
        ret i64 %and
      
      to:
        %shr = lshr i64 %key, 3
        %0 = load i64* %val, align 8
        %sub = add i64 %0, 2305843009213693951
        %and = and i64 %sub, %shr
        ret i64 %and
      
      The demanded bit optimization is actually a pessimization because add -1 would
      be codegen'ed as a sub 1. Teach the demanded constant shrinking optimization
      to check for negated constant to make sure it is actually reducing the width
      of the constant.
      
      rdar://11793464
      
      llvm-svn: 160101
      493eb32f
  13. Jul 09, 2012
  14. Jul 07, 2012
    • Nuno Lopes's avatar
      teach instcombine to remove allocated buffers even if there are stores,... · fa0dffcc
      Nuno Lopes authored
      teach instcombine to remove allocated buffers even if there are stores, memcpy/memmove/memset, and objectsize users.
      This means we can do cheap DSE for heap memory.
      Nothing is done if the pointer excapes or has a load.
      
      The churn in the tests is mostly due to objectsize, since we want to make sure we
      don't delete the malloc call before evaluating the objectsize (otherwise it becomes -1/0)
      
      llvm-svn: 159876
      fa0dffcc
  15. Jul 05, 2012
  16. Jul 04, 2012
  17. Jul 03, 2012
Loading