Tell ScalarEvolution that the loop is being deleted before actually

deleting it.  This will let ScalarEvolution be more complete about
updating its records.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70632 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2009-05-02 17:29:26 +00:00
parent 0e80b7cda1
commit 9a936502fa

View File

@ -258,6 +258,11 @@ bool LoopDeletion::runOnLoop(Loop* L, LPPassManager& LPM) {
(*LI)->dropAllReferences();
}
// Tell ScalarEvolution that the loop is deleted. Do this before
// deleting the loop so that ScalarEvolution can look at the loop
// to determine what it needs to clean up.
SE.forgetLoopBackedgeTakenCount(L);
// Erase the instructions and the blocks without having to worry
// about ordering because we already dropped the references.
// NOTE: This iteration is safe because erasing the block does not remove its
@ -266,9 +271,6 @@ bool LoopDeletion::runOnLoop(Loop* L, LPPassManager& LPM) {
LI != LE; ++LI)
(*LI)->eraseFromParent();
// Tell ScalarEvolution that the loop is deleted.
SE.forgetLoopBackedgeTakenCount(L);
// Finally, the blocks from loopinfo. This has to happen late because
// otherwise our loop iterators won't work.
LoopInfo& loopInfo = getAnalysis<LoopInfo>();