Changes in directory llvm/lib/VMCore:
PassManager.cpp updated: 1.143 -> 1.144 --- Log message: Keep track of inherited analysis. For example, if a loop pass does not preserve dominator info then it should update parent FPPassManager's available analysis info to reflect this. --- Diffs of the changes: (+21 -0) PassManager.cpp | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+) Index: llvm/lib/VMCore/PassManager.cpp diff -u llvm/lib/VMCore/PassManager.cpp:1.143 llvm/lib/VMCore/PassManager.cpp:1.144 --- llvm/lib/VMCore/PassManager.cpp:1.143 Mon Mar 5 19:06:16 2007 +++ llvm/lib/VMCore/PassManager.cpp Mon Mar 5 19:55:46 2007 @@ -551,6 +551,27 @@ AvailableAnalysis.erase(Info); } } + + // Check inherited analysis also. If P is not preserving analysis + // provided by parent manager then remove it here. + for (unsigned Index = 0; Index < PMT_Last; ++Index) { + + if (!InheritedAnalysis[Index]) + continue; + + for (std::map<AnalysisID, Pass*>::iterator + I = InheritedAnalysis[Index]->begin(), + E = InheritedAnalysis[Index]->end(); I != E; ) { + std::map<AnalysisID, Pass *>::iterator Info = I++; + if (std::find(PreservedSet.begin(), PreservedSet.end(), Info->first) == + PreservedSet.end()) { + // Remove this analysis + if (!dynamic_cast<ImmutablePass*>(Info->second)) + InheritedAnalysis[Index]->erase(Info); + } + } + } + } /// Remove analysis passes that are not used any longer _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits