Add PassManagerType enum.
authorDevang Patel <dpatel@apple.com>
Thu, 11 Jan 2007 01:10:25 +0000 (01:10 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 11 Jan 2007 01:10:25 +0000 (01:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33065 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 7599b678ec8eae6051597646d38887cc7f721e2d..9951a988bf02a6d63cf57662f5905d4d079497e8 100644 (file)
@@ -323,6 +323,18 @@ public:
   virtual void assignPassManager(PMStack &PMS);
 };
 
+/// Different types of internal pass managers. External pass managers
+/// (PassManager and FunctionPassManager) are not represented here.
+/// Ordering of pass manager types is important here.
+enum PassManagerType {
+  PMT_Unknown = 0,
+  PMT_ModulePassManager = 1, /// MPPassManager 
+  PMT_CallGraphPassManager,  /// CGPassManager
+  PMT_FunctionPassManager,   /// FPPassManager
+  PMT_LoopPassManager,       /// LPPassManager
+  PMT_BasicBlockPassManager  /// BBPassManager
+};
+
 /// PMStack
 /// Top level pass manager (see PasManager.cpp) maintains active Pass Managers 
 /// using PMStack. Each Pass implements assignPassManager() to connect itself
index 62e453399b6d5b32ee9b7261523e527637cfaaaf..00f08cac9eee9c88df247d6635af4996ec2b7fd2 100644 (file)
@@ -291,6 +291,10 @@ public:
     return PassVector.size();
   }
 
+  virtual PassManagerType getPassManagerType() { 
+    assert ( 0 && "Invalid use of getPassManagerType");
+    return PMT_Unknown; 
+  }
 protected:
 
   // If a FunctionPass F is the last user of ModulePass info M
@@ -359,6 +363,10 @@ public:
     BasicBlockPass *BP = static_cast<BasicBlockPass *>(PassVector[N]);
     return BP;
   }
+
+  virtual PassManagerType getPassManagerType() { 
+    return PMT_BasicBlockPassManager; 
+  }
 };
 
 //===----------------------------------------------------------------------===//
@@ -413,6 +421,9 @@ public:
     return FP;
   }
 
+  virtual PassManagerType getPassManagerType() { 
+    return PMT_FunctionPassManager; 
+  }
 private:
   // Active Pass Manager
   BBPassManager *activeBBPassManager;
@@ -529,6 +540,7 @@ public:
     return MP;
   }
 
+  virtual PassManagerType getPassManagerType() { return PMT_ModulePassManager; }
 private:
   // Active Pass Manager
   FPPassManager *activeFunctionPassManager;