OSDN Git Service

LoopDeletion needs to inform ScalarEvolution when a loop is deleted,
authorDan Gohman <gohman@apple.com>
Mon, 23 Feb 2009 17:10:29 +0000 (17:10 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 23 Feb 2009 17:10:29 +0000 (17:10 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65323 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopDeletion.cpp

index 86edcfa..ac807a4 100644 (file)
@@ -260,7 +260,10 @@ bool LoopDeletion::runOnLoop(Loop* L, LPPassManager& LPM) {
   for (Loop::block_iterator LI = L->block_begin(), LE = L->block_end();
        LI != LE; ++LI)
     (*LI)->eraseFromParent();
-  
+
+  // Tell ScalarEvolution that the loop is deleted.
+  SE.forgetLoopIterationCount(L);
+
   // Finally, the blocks from loopinfo.  This has to happen late because
   // otherwise our loop iterators won't work.
   LoopInfo& loopInfo = getAnalysis<LoopInfo>();