summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/LoopDeletion.cpp
Commit message (Collapse)AuthorAgeFilesLines
* LoopDeletion depends on loops having dedicated exits.Dan Gohman2009-11-051-0/+4
| | | | llvm-svn: 86180
* Rename forgetLoopBackedgeTakenCount to forgetLoop, because itDan Gohman2009-10-311-1/+1
| | | | | | clears out more information than just the stored backedge taken count. llvm-svn: 85664
* Simplify this code. LoopDeletion doesn't need to explicit check thatDan Gohman2009-10-261-24/+2
| | | | | | | the loop exiting block dominates the latch block; if ScalarEvolution can prove that the trip-count is finite, that's sufficient. llvm-svn: 85165
* Make LoopDeletion check the maximum backedge taken count, rather than theDan Gohman2009-10-231-1/+1
| | | | | | | exact backedge taken count, when checking for infinite loops. This allows it to delete loops with multiple exit conditions. llvm-svn: 84952
* eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861Chris Lattner2009-09-021-3/+1
| | | | llvm-svn: 80766
* Make makeLoopInvariant report whether it made any changes or not,Dan Gohman2009-07-151-40/+12
| | | | | | and use this to simplify more code. llvm-svn: 75722
* Tell ScalarEvolution to forget a loop before starting to delete it.Dan Gohman2009-07-081-6/+6
| | | | | | | This way ScalarEvolution can examine the loop to determine what state it needs to update, if it chooses. llvm-svn: 75029
* Change all SCEV* to SCEV *.Dan Gohman2009-07-071-1/+1
| | | | llvm-svn: 74918
* SCEVHandle is no more!Owen Anderson2009-06-221-1/+1
| | | | llvm-svn: 73906
* Allow readonly functions to unwind exceptions. TeachDuncan Sands2009-05-061-4/+1
| | | | | | | | the optimizers about this. For example, a readonly function with no uses cannot be removed unless it is also marked nounwind. llvm-svn: 71071
* Re-apply 70645, converting ScalarEvolution to useDan Gohman2009-05-041-7/+0
| | | | | | | | | | | | CallbackVH, with fixes. allUsesReplacedWith need to walk the def-use chains and invalidate all users of a value that is replaced. SCEVs of users need to be recalcualted even if the new value is equivalent. Also, make forgetLoopPHIs walk def-use chains, since any SCEV that depends on a PHI should be recalculated when more information about that PHI becomes available. llvm-svn: 70927
* Revert r70645 for now; it's causing a variety of regressions.Dan Gohman2009-05-031-0/+7
| | | | llvm-svn: 70661
* Convert ScalarEvolution to use CallbackVH for its internal map. ThisDan Gohman2009-05-021-7/+0
| | | | | | | | | makes ScalarEvolution::deleteValueFromRecords, and it's code that subtly needed to be called before ReplaceAllUsesWith, unnecessary. It also makes ValueDeletionListener unnecessary. llvm-svn: 70645
* Tell ScalarEvolution that the loop is being deleted before actuallyDan Gohman2009-05-021-3/+5
| | | | | | | deleting it. This will let ScalarEvolution be more complete about updating its records. llvm-svn: 70632
* Rename ScalarEvolution's getIterationCount to getBackedgeTakenCount,Dan Gohman2009-02-241-2/+2
| | | | | | | | | to more accurately describe what it does. Expand its doxygen comment to describe what the backedge-taken count is and how it differs from the actual iteration count of the loop. Adjust names and comments in associated code accordingly. llvm-svn: 65382
* Preserve the DominanceFrontier analysis in the LoopDeletion pass.Dan Gohman2009-02-241-2/+7
| | | | llvm-svn: 65359
* LoopDeletion needs to inform ScalarEvolution when a loop is deleted,Dan Gohman2009-02-231-1/+4
| | | | | | | | so that ScalarEvolution doesn't hang onto a dangling Loop*, which could be a problem if another Loop happens to get allocated at the same address. llvm-svn: 65323
* Change create*Pass factory functions to return Pass* instead ofDaniel Dunbar2008-10-221-1/+1
| | | | | | | | | | | 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
* Tidy up several unbeseeming casts from pointer to intptr_t.Dan Gohman2008-09-041-1/+1
| | | | llvm-svn: 55779
* Use use_empty() instead of getNumUses(), avoiding a use list traversal.Dan Gohman2008-06-231-1/+1
| | | | llvm-svn: 52651
* Remove debugging code.Owen Anderson2008-05-291-5/+1
| | | | llvm-svn: 51666
* Clean ups for loop deletion based on Chris' feedback.Owen Anderson2008-05-161-28/+32
| | | | | | | Also, use SCEV to determine the trip count of the loop, which is more powerful and accurate that Loop::getTripCount. llvm-svn: 51179
* Clean up the use of static and anonymous namespaces. This turned upDan Gohman2008-05-131-3/+3
| | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
* Improve pass documentation and comments.Gordon Henriksen2008-05-081-4/+4
| | | | | | Patch by Matthijs Kooijman! llvm-svn: 50861
* We need to update PHIs containing the exiting block, not the exit block. We ↵Owen Anderson2008-05-061-3/+8
| | | | | | really should come up with better names for these. llvm-svn: 50770
* This condition got inverted accidentally.Owen Anderson2008-04-301-1/+1
| | | | llvm-svn: 50473
* A lot of cleanups and documentation improvements, as well as a few corner ↵Owen Anderson2008-04-291-59/+76
| | | | | | | | case fixes. Most of this was suggested by Chris. llvm-svn: 50441
* Rename DeadLoopElimination to LoopDeletion, part 2.Owen Anderson2008-04-291-14/+12
| | | | llvm-svn: 50437
* Rename DeadLoopElimination to LoopDeletion, part one.Owen Anderson2008-04-291-0/+260
llvm-svn: 50436
OpenPOWER on IntegriCloud