Now FunctionPassManagerImpl_New and PassManagerImpl_New derives from
authorDevang Patel <dpatel@apple.com>
Thu, 7 Dec 2006 21:27:23 +0000 (21:27 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 7 Dec 2006 21:27:23 +0000 (21:27 +0000)
PMTopLevelManager.

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

lib/VMCore/PassManager.cpp

index c0aeaa20468efe21ced65d2bf8819c62288550c0..dfcfcf89d21177d20d0df53423b7d6720342da62 100644 (file)
@@ -327,8 +327,9 @@ private:
 /// It batches all function passes and basic block pass managers together and
 /// sequence them to process one function at a time before processing next
 /// function.
-class FunctionPassManagerImpl_New : public PMDataManager,
-                                    public ModulePass {
+class FunctionPassManagerImpl_New : public ModulePass, 
+                                    public PMDataManager,
+                                    public PMTopLevelManager {
 public:
   FunctionPassManagerImpl_New(ModuleProvider *P) { /* TODO */ }
   FunctionPassManagerImpl_New() { 
@@ -336,6 +337,10 @@ public:
   }
   ~FunctionPassManagerImpl_New() { /* TODO */ };
  
+  inline void addTopLevelPass(Pass *P) { 
+    addPass(P);
+  }
+
   /// add - Add a pass to the queue of passes to run.  This passes
   /// ownership of the Pass to the PassManager.  When the
   /// PassManager_X is destroyed, the pass will be destroyed as well, so
@@ -402,7 +407,8 @@ private:
 };
 
 /// PassManager_New manages ModulePassManagers
-class PassManagerImpl_New : public PMDataManager {
+class PassManagerImpl_New : public PMDataManager,
+                            public PMTopLevelManager {
 
 public:
 
@@ -424,6 +430,10 @@ public:
     Info.setPreservesAll();
   }
 
+  inline void addTopLevelPass(Pass *P) {
+    addPass(P);
+  }
+
 private:
 
   /// Add a pass into a passmanager queue.