Changes in directory llvm/lib/VMCore:
PassManager.cpp updated: 1.58 -> 1.59 --- Log message: doInitialization and doFinalization for BasicBlockPassManager_New --- Diffs of the changes: (+60 -3) PassManager.cpp | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 60 insertions(+), 3 deletions(-) Index: llvm/lib/VMCore/PassManager.cpp diff -u llvm/lib/VMCore/PassManager.cpp:1.58 llvm/lib/VMCore/PassManager.cpp:1.59 --- llvm/lib/VMCore/PassManager.cpp:1.58 Thu Dec 7 18:37:52 2006 +++ llvm/lib/VMCore/PassManager.cpp Thu Dec 7 18:59:05 2006 @@ -199,7 +199,6 @@ addTopLevelPass(P); } - //===----------------------------------------------------------------------===// // PMDataManager @@ -327,7 +326,11 @@ Info.setPreservesAll(); } -private: + bool doInitialization(Module &M); + bool doInitialization(Function &F); + bool doFinalization(Module &M); + bool doFinalization(Function &F); + }; /// FunctionPassManagerImpl_New manages FunctionPasses and BasicBlockPassManagers. @@ -533,7 +536,7 @@ std::map<AnalysisID, Pass*>::iterator Pos = AvailableAnalysis.find((*I)->getPassInfo()); - // It is possible that deadPass is already removed from the AvailableAnalysis + // It is possible that pass is already removed from the AvailableAnalysis if (Pos != AvailableAnalysis.end()) AvailableAnalysis.erase(Pos); } @@ -669,6 +672,60 @@ return getAnalysisPass(AID); } +// Implement doInitialization and doFinalization +inline bool BasicBlockPassManager_New::doInitialization(Module &M) { + bool Changed = false; + + for (std::vector<Pass *>::iterator itr = passVectorBegin(), + e = passVectorEnd(); itr != e; ++itr) { + Pass *P = *itr; + BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P); + Changed |= BP->doInitialization(M); + } + + return Changed; +} + +inline bool BasicBlockPassManager_New::doFinalization(Module &M) { + bool Changed = false; + + for (std::vector<Pass *>::iterator itr = passVectorBegin(), + e = passVectorEnd(); itr != e; ++itr) { + Pass *P = *itr; + BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P); + Changed |= BP->doFinalization(M); + } + + return Changed; +} + +inline bool BasicBlockPassManager_New::doInitialization(Function &F) { + bool Changed = false; + + for (std::vector<Pass *>::iterator itr = passVectorBegin(), + e = passVectorEnd(); itr != e; ++itr) { + Pass *P = *itr; + BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P); + Changed |= BP->doInitialization(F); + } + + return Changed; +} + +inline bool BasicBlockPassManager_New::doFinalization(Function &F) { + bool Changed = false; + + for (std::vector<Pass *>::iterator itr = passVectorBegin(), + e = passVectorEnd(); itr != e; ++itr) { + Pass *P = *itr; + BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P); + Changed |= BP->doFinalization(F); + } + + return Changed; +} + + //===----------------------------------------------------------------------===// // FunctionPassManager_New implementation _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits