Undo last check-in.
authorDevang Patel <dpatel@apple.com>
Tue, 16 Jan 2007 21:43:18 +0000 (21:43 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 16 Jan 2007 21:43:18 +0000 (21:43 +0000)
Remove setupPassManager() and its use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33270 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Pass.h
lib/VMCore/PassManager.cpp

index fcdc66fcbad3f282348633a5caefdba39f4efbe2..9951a988bf02a6d63cf57662f5905d4d079497e8 100644 (file)
@@ -108,8 +108,6 @@ public:
   void dump() const; // dump - call print(std::cerr, 0);
 
   virtual void assignPassManager(PMStack &PMS) {}
-  virtual void setupPassManager(PMStack &PMS) {}
-
   // Access AnalysisResolver
   inline void setResolver(AnalysisResolver *AR) { Resolver = AR; }
   inline AnalysisResolver *getResolver() { return Resolver; }
@@ -203,7 +201,6 @@ public:
   virtual bool runPass(BasicBlock&) { return false; }
 
   virtual void assignPassManager(PMStack &PMS);
-
   // Force out-of-line virtual method.
   virtual ~ModulePass();
 };
@@ -270,7 +267,6 @@ public:
   bool run(Function &F);
 
   virtual void assignPassManager(PMStack &PMS);
-  virtual void setupPassManager(PMStack &PMS);
 };
 
 
@@ -325,7 +321,6 @@ public:
   virtual bool runPass(BasicBlock &BB);
 
   virtual void assignPassManager(PMStack &PMS);
-  virtual void setupPassManager(PMStack &PMS);
 };
 
 /// Different types of internal pass managers. External pass managers
@@ -342,10 +337,8 @@ enum PassManagerType {
 
 /// PMStack
 /// Top level pass manager (see PasManager.cpp) maintains active Pass Managers 
-/// using PMStack. Each Pass implements setupPassManager() and 
-/// assignPassManager() to connect itself with appropriate manager. 
-/// setupPassManager() creates new pass manager if required before adding 
-/// required analysis passes. assignPassManager() walks PMStack to find
+/// using PMStack. Each Pass implements assignPassManager() to connect itself
+/// with appropriate manager. assignPassManager() walks PMStack to find
 /// suitable manager.
 ///
 /// PMStack is just a wrapper around standard deque that overrides pop() and
index 50364e9c71debe462cd6c3564ed5d277e809e665..1e3b48ee686d1f5c93cba8468521d12f98ba37ed 100644 (file)
@@ -366,7 +366,8 @@ void PMTopLevelManager::collectLastUses(std::vector<Pass *> &LastUses,
 /// the manager. Remove dead passes. This is a recursive function.
 void PMTopLevelManager::schedulePass(Pass *P) {
 
-  P->setupPassManager(activeStack);
+  // TODO : Allocate function manager for this pass, other wise required set
+  // may be inserted into previous function manager
 
   AnalysisUsage AnUsage;
   P->getAnalysisUsage(AnUsage);
@@ -1217,55 +1218,47 @@ void ModulePass::assignPassManager(PMStack &PMS) {
   MPP->add(this);
 }
 
-/// Setup Pass Manager in advance before checking availability of
-/// required analysis passes.
-void FunctionPass::setupPassManager(PMStack &PMS) {
+/// Find appropriate Function Pass Manager or Call Graph Pass Manager
+/// in the PM Stack and add self into that manager. 
+void FunctionPass::assignPassManager(PMStack &PMS) {
 
   // Find Module Pass Manager (TODO : Or Call Graph Pass Manager)
   while(!PMS.empty()) {
     if (PMS.top()->getPassManagerType() > PMT_FunctionPassManager)
       PMS.pop();
     else
-      break;
+      break; 
   }
+  FPPassManager *FPP = dynamic_cast<FPPassManager *>(PMS.top());
 
-  assert(!PMS.empty() && "Unable to create Function Pass Manager");
+  // Create new Function Pass Manager
+  if (!FPP) {
+    assert(!PMS.empty() && "Unable to create Function Pass Manager");
+    PMDataManager *PMD = PMS.top();
 
-  if (PMS.top()->getPassManagerType() == PMT_FunctionPassManager
-      || PMS.top()->getPassManagerType() == PMT_CallGraphPassManager)
-    return;
-      
-  PMDataManager *PMD = PMS.top();
-  
-  // [1] Create new Function Pass Manager
-  FPPassManager *FPP = new FPPassManager(PMD->getDepth() + 1);
-  
-  // [2] Set up new manager's top level manager
-  PMTopLevelManager *TPM = PMD->getTopLevelManager();
-  TPM->addIndirectPassManager(FPP);
-  
-  // [3] Assign manager to manage this new manager. This may create
-  // and push new managers into PMS
-  Pass *P = dynamic_cast<Pass *>(FPP);
-  P->assignPassManager(PMS);
-  
-  // [4] Push new manager into PMS
-  PMS.push(FPP);
-}
+    // [1] Create new Function Pass Manager
+    FPP = new FPPassManager(PMD->getDepth() + 1);
 
-/// Find appropriate Function Pass Manager or Call Graph Pass Manager
-/// in the PM Stack and add self into that manager. 
-void FunctionPass::assignPassManager(PMStack &PMS) {
+    // [2] Set up new manager's top level manager
+    PMTopLevelManager *TPM = PMD->getTopLevelManager();
+    TPM->addIndirectPassManager(FPP);
 
-  PMDataManager *PMD = dynamic_cast<PMDataManager *>(PMS.top());
-  assert(PMD && "Unable to assign Pass Manager");
+    // [3] Assign manager to manage this new manager. This may create
+    // and push new managers into PMS
+    Pass *P = dynamic_cast<Pass *>(FPP);
+    P->assignPassManager(PMS);
+
+    // [4] Push new manager into PMS
+    PMS.push(FPP);
+  }
 
-  PMD->add(this);
+  // Assign FPP as the manager of this pass.
+  FPP->add(this);
 }
 
-/// Setup Pass Manager in advance before checking availability of
-/// required analysis passes.
-void BasicBlockPass::setupPassManager(PMStack &PMS) {
+/// Find appropriate Basic Pass Manager or Call Graph Pass Manager
+/// in the PM Stack and add self into that manager. 
+void BasicBlockPass::assignPassManager(PMStack &PMS) {
 
   BBPassManager *BBP = NULL;
 
@@ -1275,37 +1268,32 @@ void BasicBlockPass::setupPassManager(PMStack &PMS) {
     BBP = dynamic_cast<BBPassManager *>(PMS.top());
   }
 
-  if (BBP)
-    return;
+  // If leaf manager is not Basic Block Pass manager then create new
+  // basic Block Pass manager.
+
+  if (!BBP) {
+    assert(!PMS.empty() && "Unable to create BasicBlock Pass Manager");
+    PMDataManager *PMD = PMS.top();
+
+    // [1] Create new Basic Block Manager
+    BBP = new BBPassManager(PMD->getDepth() + 1);
+
+    // [2] Set up new manager's top level manager
+    // Basic Block Pass Manager does not live by itself
+    PMTopLevelManager *TPM = PMD->getTopLevelManager();
+    TPM->addIndirectPassManager(BBP);
 
-  assert(!PMS.empty() && "Unable to create BasicBlock Pass Manager");
-  PMDataManager *PMD = PMS.top();
-  
-  // [1] Create new Basic Block Manager
-  BBP = new BBPassManager(PMD->getDepth() + 1);
-  
-  // [2] Set up new manager's top level manager
-  // Basic Block Pass Manager does not live by itself
-  PMTopLevelManager *TPM = PMD->getTopLevelManager();
-  TPM->addIndirectPassManager(BBP);
-  
     // [3] Assign manager to manage this new manager. This may create
     // and push new managers into PMS
-  Pass *P = dynamic_cast<Pass *>(BBP);
-  P->assignPassManager(PMS);
-  
-  // [4] Push new manager into PMS
-  PMS.push(BBP);
-}
-
-/// Find appropriate Basic Pass Manager or Call Graph Pass Manager
-/// in the PM Stack and add self into that manager. 
-void BasicBlockPass::assignPassManager(PMStack &PMS) {
+    Pass *P = dynamic_cast<Pass *>(BBP);
+    P->assignPassManager(PMS);
 
-  PMDataManager *PMD = dynamic_cast<PMDataManager *>(PMS.top());
-  assert(PMD && "Unable to assign Pass Manager");
+    // [4] Push new manager into PMS
+    PMS.push(BBP);
+  }
 
-  PMD->add(this);
+  // Assign BBP as the manager of this pass.
+  BBP->add(this);
 }