diff options
| author | Chris Lattner <sabre@nondot.org> | 2002-09-29 22:50:22 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2002-09-29 22:50:22 +0000 |
| commit | 6b6f540959e5e0eb8f50f57d10a7d5b52bfdcb5f (patch) | |
| tree | 87e4241ed84a0ee669ff4d6ced91b9b94d13dd45 /llvm | |
| parent | 05e86302f43ede3f00843c4c0f1157eedc69e7bd (diff) | |
| download | bcm5719-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.h | 13 |
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; } |

