summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-09-29 22:50:22 +0000
committerChris Lattner <sabre@nondot.org>2002-09-29 22:50:22 +0000
commit6b6f540959e5e0eb8f50f57d10a7d5b52bfdcb5f (patch)
tree87e4241ed84a0ee669ff4d6ced91b9b94d13dd45 /llvm
parent05e86302f43ede3f00843c4c0f1157eedc69e7bd (diff)
downloadbcm5719-llvm-6b6f540959e5e0eb8f50f57d10a7d5b52bfdcb5f.tar.gz
bcm5719-llvm-6b6f540959e5e0eb8f50f57d10a7d5b52bfdcb5f.zip
Fix a problem that was caused by stale analyses being in CurrentAnalyses
llvm-svn: 3981
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/VMCore/PassManagerT.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/PassManagerT.h b/llvm/lib/VMCore/PassManagerT.h
index 913a64f89ee..cf8624105da 100644
--- a/llvm/lib/VMCore/PassManagerT.h
+++ b/llvm/lib/VMCore/PassManagerT.h
@@ -292,6 +292,19 @@ public:
(Annotable*)M);
(*I)->releaseMemory();
}
+
+ // Make sure to remove dead passes from the CurrentAnalyses list...
+ for (std::map<AnalysisID, Pass*>::iterator I = CurrentAnalyses.begin();
+ I != CurrentAnalyses.end(); ) {
+ std::vector<Pass*>::iterator DPI = std::find(DeadPass.begin(),
+ DeadPass.end(), I->second);
+ if (DPI != DeadPass.end()) { // This pass is dead now... remove it
+ std::map<AnalysisID, Pass*>::iterator IDead = I++;
+ CurrentAnalyses.erase(IDead);
+ } else {
+ ++I; // Move on to the next element...
+ }
+ }
}
return MadeChanges;
}
OpenPOWER on IntegriCloud