Changes in directory llvm/lib/VMCore:
PassManager.cpp updated: 1.57 -> 1.58 --- Log message: Reimplement removeDeadPasses(). --- Diffs of the changes: (+15 -1) PassManager.cpp | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletion(-) Index: llvm/lib/VMCore/PassManager.cpp diff -u llvm/lib/VMCore/PassManager.cpp:1.57 llvm/lib/VMCore/PassManager.cpp:1.58 --- llvm/lib/VMCore/PassManager.cpp:1.57 Thu Dec 7 17:55:10 2006 +++ llvm/lib/VMCore/PassManager.cpp Thu Dec 7 18:37:52 2006 @@ -522,7 +522,21 @@ /// Remove analysis passes that are not used any longer void PMDataManager::removeDeadPasses(Pass *P) { - // TODO : reimplement + + std::vector<Pass *> DeadPasses; + TPM->collectLastUses(DeadPasses, P); + + for (std::vector<Pass *>::iterator I = DeadPasses.begin(), + E = DeadPasses.end(); I != E; ++I) { + (*I)->releaseMemory(); + + std::map<AnalysisID, Pass*>::iterator Pos = + AvailableAnalysis.find((*I)->getPassInfo()); + + // It is possible that deadPass is already removed from the AvailableAnalysis + if (Pos != AvailableAnalysis.end()) + AvailableAnalysis.erase(Pos); + } } /// Add pass P into the PassVector. Update _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits