From: Devang Patel Date: Tue, 16 Jan 2007 02:00:38 +0000 (+0000) Subject: Code refactoring. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=8f3f3d103a8b92bd0514ab5998865205e17ef550;p=oota-llvm.git Code refactoring. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33245 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/PassManagers.h b/include/llvm/PassManagers.h index 170b992c85f..c4b3eed7f8a 100644 --- a/include/llvm/PassManagers.h +++ b/include/llvm/PassManagers.h @@ -86,6 +86,13 @@ class llvm::PMStack; namespace llvm { +/// FunctionPassManager and PassManager, two top level managers, serve +/// as the public interface of pass manager infrastructure. +enum TopLevelManagerType { + TLM_Function, // FunctionPassManager + TLM_Pass // PassManager +}; + //===----------------------------------------------------------------------===// // PMTopLevelManager // @@ -118,6 +125,7 @@ public: /// then return NULL. Pass *findAnalysisPass(AnalysisID AID); + PMTopLevelManager(enum TopLevelManagerType t); virtual ~PMTopLevelManager(); /// Add immutable pass and initialize it. diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index db03842bcea..1e3b48ee686 100644 --- a/lib/VMCore/PassManager.cpp +++ b/lib/VMCore/PassManager.cpp @@ -112,7 +112,8 @@ class FunctionPassManagerImpl : public Pass, public PMTopLevelManager { public: - FunctionPassManagerImpl(int Depth) : PMDataManager(Depth) { } + FunctionPassManagerImpl(int Depth) : PMDataManager(Depth), + PMTopLevelManager(TLM_Function) { } /// add - Add a pass to the queue of passes to run. This passes ownership of /// the Pass to the PassManager. When the PassManager is destroyed, the pass @@ -151,13 +152,6 @@ public: addImmutablePass(IP); recordAvailableAnalysis(IP); } else { - // Assign manager - if (activeStack.empty()) { - FPPassManager *FPP = new FPPassManager(getDepth() + 1); - FPP->setTopLevelManager(this->getTopLevelManager()); - addPassManager(FPP); - activeStack.push(FPP); - } P->assignPassManager(activeStack); } @@ -220,7 +214,8 @@ class PassManagerImpl : public Pass, public: - PassManagerImpl(int Depth) : PMDataManager(Depth) { } + PassManagerImpl(int Depth) : PMDataManager(Depth), + PMTopLevelManager(TLM_Pass) { } /// add - Add a pass to the queue of passes to run. This passes ownership of /// the Pass to the PassManager. When the PassManager is destroyed, the pass @@ -251,15 +246,6 @@ public: addImmutablePass(IP); recordAvailableAnalysis(IP); } else { - - // Assign manager - if (activeStack.empty()) { - MPPassManager *MPP = new MPPassManager(getDepth() + 1); - MPP->setTopLevelManager(this->getTopLevelManager()); - addPassManager(MPP); - activeStack.push(MPP); - } - P->assignPassManager(activeStack); } @@ -331,6 +317,23 @@ static TimingInfo *TheTimeInfo; //===----------------------------------------------------------------------===// // PMTopLevelManager implementation +/// Initialize top level manager. Create first pass manager. +PMTopLevelManager::PMTopLevelManager (enum TopLevelManagerType t) { + + if (t == TLM_Pass) { + MPPassManager *MPP = new MPPassManager(1); + MPP->setTopLevelManager(this); + addPassManager(MPP); + activeStack.push(MPP); + } + else if (t == TLM_Function) { + FPPassManager *FPP = new FPPassManager(1); + FPP->setTopLevelManager(this); + addPassManager(FPP); + activeStack.push(FPP); + } +} + /// Set pass P as the last user of the given analysis passes. void PMTopLevelManager::setLastUser(std::vector &AnalysisPasses, Pass *P) {