Add getPotentialPassManagerType(). No functionality change, yet.
authorDevang Patel <dpatel@apple.com>
Mon, 16 Apr 2007 18:51:25 +0000 (18:51 +0000)
committerDevang Patel <dpatel@apple.com>
Mon, 16 Apr 2007 18:51:25 +0000 (18:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36149 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/LoopPass.h
include/llvm/CallGraphSCCPass.h
include/llvm/Pass.h

index dd9480f0aa870edeb8291ddd5657d5c3a6e028c1..4163a09d333cb8b399e9ff8e6fd3d94ec8eaefe8 100644 (file)
@@ -57,6 +57,10 @@ class LoopPass : public Pass {
   virtual void assignPassManager(PMStack &PMS,
                                  PassManagerType PMT = PMT_LoopPassManager);
 
+  ///  Return what kind of Pass Manager can manage this pass.
+  virtual PassManagerType getPotentialPassManagerType() const {
+    return PMT_LoopPassManager;
+  }
 };
 
 class LPPassManager : public FunctionPass, public PMDataManager {
index f68e44774bcdf466e15a7b240e922b1647e0a223..af5cb849a38afa3782ee434148a953f6c19d13e7 100644 (file)
@@ -54,6 +54,11 @@ struct CallGraphSCCPass : public Pass {
   virtual void assignPassManager(PMStack &PMS,
                                  PassManagerType PMT = PMT_CallGraphPassManager);
 
+  ///  Return what kind of Pass Manager can manage this pass.
+  virtual PassManagerType getPotentialPassManagerType() const {
+    return PMT_CallGraphPassManager;
+  }
+
   /// getAnalysisUsage - For this class, we declare that we require and preserve
   /// the call graph.  If the derived class implements this method, it should
   /// always explicitly call the implementation here.
index 30ddede85fb775e0ff76453a43aa497b8656d99d..cef45011cecea477e0dd183584f9924f862b310b 100644 (file)
@@ -126,6 +126,11 @@ public:
                                  PassManagerType T = PMT_Unknown) {}
   /// Check if available pass managers are suitable for this pass or not.
   virtual void preparePassManager(PMStack &PMS) {}
+  
+  ///  Return what kind of Pass Manager can manage this pass.
+  virtual PassManagerType getPotentialPassManagerType() const {
+    return PMT_Unknown; 
+  }
 
   // Access AnalysisResolver
   inline void setResolver(AnalysisResolver *AR) { Resolver = AR; }
@@ -193,7 +198,7 @@ public:
 
   template<typename AnalysisType>
   AnalysisType &getAnalysisID(const PassInfo *PI) const;
-    
+
 };
 
 inline std::ostream &operator<<(std::ostream &OS, const Pass &P) {
@@ -216,6 +221,12 @@ public:
 
   virtual void assignPassManager(PMStack &PMS, 
                                  PassManagerType T = PMT_ModulePassManager);
+
+  ///  Return what kind of Pass Manager can manage this pass.
+  virtual PassManagerType getPotentialPassManagerType() const {
+    return PMT_ModulePassManager;
+  }
+
   // Force out-of-line virtual method.
   virtual ~ModulePass();
 };
@@ -283,6 +294,11 @@ public:
 
   virtual void assignPassManager(PMStack &PMS, 
                                  PassManagerType T = PMT_FunctionPassManager);
+
+  ///  Return what kind of Pass Manager can manage this pass.
+  virtual PassManagerType getPotentialPassManagerType() const {
+    return PMT_FunctionPassManager;
+  }
 };
 
 
@@ -338,6 +354,11 @@ public:
 
   virtual void assignPassManager(PMStack &PMS, 
                                  PassManagerType T = PMT_BasicBlockPassManager);
+
+  ///  Return what kind of Pass Manager can manage this pass.
+  virtual PassManagerType getPotentialPassManagerType() const {
+    return PMT_BasicBlockPassManager; 
+  }
 };
 
 /// PMStack