Skip to content
  1. Aug 26, 2008
  2. Aug 17, 2008
  3. Aug 15, 2008
  4. Aug 14, 2008
  5. Aug 13, 2008
  6. Aug 06, 2008
  7. Jul 21, 2008
  8. Jul 14, 2008
  9. 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
  10. Jun 24, 2008
  11. Jun 22, 2008
  12. Jun 18, 2008
  13. Jun 17, 2008
  14. Jun 16, 2008
  15. Jun 13, 2008
  16. Jun 11, 2008
  17. May 24, 2008
  18. 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
  19. May 20, 2008
  20. 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
  21. May 13, 2008
  22. Apr 14, 2008
  23. Apr 06, 2008
  24. Mar 19, 2008
  25. Jan 29, 2008
  26. Dec 29, 2007
  27. Dec 20, 2007
  28. Nov 17, 2007
  29. Oct 31, 2007
  30. Oct 30, 2007
  31. Oct 29, 2007
  32. Oct 27, 2007
    • Evan Cheng's avatar
      A number of LSR fixes: · 9dbe99dc
      Evan Cheng authored
      - ChangeCompareStride only reuse stride that is larger than current stride. It
        will let the general reuse mechanism to try to reuse a smaller stride.
      - Watch out for multiplication overflow in ChangeCompareStride.
      - Replace std::set with SmallPtrSet.
      
      llvm-svn: 43408
      9dbe99dc
Loading