Skip to content
  1. Nov 29, 2008
  2. Nov 28, 2008
  3. Oct 23, 2008
    • Daniel Dunbar's avatar
      Change create*Pass factory functions to return Pass* instead of · 7f39e2d8
      Daniel Dunbar authored
      LoopPass*.
       - Although less precise, this means they can be used in clients
         without RTTI (who would otherwise need to include LoopPass.h, which
         eventually includes things using dynamic_cast). This was the
         simplest solution that presented itself, but I am happy to use a
         better one if available.
      
      llvm-svn: 58010
      7f39e2d8
  4. Oct 01, 2008
  5. Sep 15, 2008
    • Dan Gohman's avatar
      Teach LSR to optimize away SMAX operations for tripcounts in common · 68e7735a
      Dan Gohman authored
      cases.  See the comment above OptimizeSMax for the full story, and
      the testcase for an example. This cancels out a pessimization
      commonly attributed to indvars, and will allow us to lift some of
      the artificial throttles in indvars, rather than add new ones.
      
      llvm-svn: 56230
      68e7735a
  6. Sep 09, 2008
  7. Sep 08, 2008
  8. Sep 04, 2008
  9. Sep 03, 2008
  10. Aug 27, 2008
  11. Aug 26, 2008
  12. Aug 17, 2008
  13. Aug 15, 2008
  14. Aug 14, 2008
  15. Aug 13, 2008
  16. Aug 06, 2008
  17. Jul 21, 2008
  18. Jul 14, 2008
  19. Jul 07, 2008
    • Evan Cheng's avatar
      Fix two serious LSR bugs. · 03001cb8
      Evan Cheng authored
      1. LSR runOnLoop is always returning false regardless if any transformation is made.
      2. AddUsersIfInteresting can create new instructions that are added to DeadInsts. But there is a later early exit which prevents them from being freed.
      
      llvm-svn: 53193
      03001cb8
  20. Jun 24, 2008
  21. Jun 22, 2008
  22. Jun 18, 2008
  23. Jun 17, 2008
  24. Jun 16, 2008
  25. Jun 13, 2008
  26. Jun 11, 2008
  27. May 24, 2008
  28. May 21, 2008
    • Dan Gohman's avatar
      When LSR is replacing an instruction, call · e62632e0
      Dan Gohman authored
      ScalarEvolution::deleteValueFromRecords on it before doing the
      replaceAllUsesWith, because ScalarEvolution looks at the instruction's
      users to find SCEV references to the instruction's SCEV object in its
      internal maps.
      
      Move all of LSR's loop-related state clearing after processing the loop
      and before cleaning up dead PHI nodes. This eliminates all of LSR's SCEV
      references just before the calls to ScalarEvolution::deleteValueFromRecords
      so that when ScalarEvolution drops its own SCEV references, the reference
      counts will reach zero and the SCEVs will be deleted immediately.
      
      These changes fix some compiler aborts involving ScalarEvolution holding
      onto and reusing SCEV objects for instructions that have been deleted.
      No regression test unfortunately; because the symptoms were due to
      dangling pointers, reduced testcases ended up being fairly arbitrary.
      
      llvm-svn: 51359
      e62632e0
  29. May 20, 2008
  30. May 16, 2008
    • Dan Gohman's avatar
      Fix a bug in LoopStrengthReduce that caused it to emit IR with · 0a0fa7cf
      Dan Gohman authored
      use-before-def. The problem comes up in code with multiple PHIs where
      one PHI is being rewritten in terms of the other, but the other needs
      to be casted first. LLVM rules requre the cast instruction to be
      inserted after any PHI instructions, but when instructions were
      inserted to replace the second PHI value with a function of the first,
      they were ended up going before the cast instruction. Avoid this
      problem by remembering the location of the cast instruction, when one
      is needed, and inserting the expansion of the new value after it.
      
      This fixes a bug that surfaced in 255.vortex on x86-64 when
      instcombine was removed from the middle of the loop optimization
      passes. 
      
      llvm-svn: 51169
      0a0fa7cf
  31. May 13, 2008
Loading