When a loop is deleted, immediately release all of the active

LoopPasses for that loop. This avoids trouble with the PassManager
trying to call verifyAnalysis on them, and frees up some memory
sooner rather than later.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82945 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2009-09-27 23:43:07 +00:00
parent 27a8fb8a54
commit 9702901a1e

View File

@ -253,6 +253,15 @@ bool LPPassManager::runOnFunction(Function &F) {
break;
}
// If the loop was deleted, release all the loop passes. This frees up
// some memory, and avoids trouble with the pass manager trying to call
// verifyAnalysis on them.
if (skipThisLoop)
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
Pass *P = getContainedPass(Index);
freePass(P, "", ON_LOOP_MSG);
}
// Pop the loop from queue after running all passes.
LQ.pop_back();