[llvm-commits] CVS: llvm/lib/VMCore/PassManager.cpp

Devang Patel dpatel at apple.com
Fri Dec 8 14:47:40 PST 2006



Changes in directory llvm/lib/VMCore:

PassManager.cpp updated: 1.66 -> 1.67
---
Log message:

Do not keep yet another list of pass managers in PassManagerImpl_New.
Use one provided by toplevel manager.


---
Diffs of the changes:  (+9 -8)

 PassManager.cpp |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)


Index: llvm/lib/VMCore/PassManager.cpp
diff -u llvm/lib/VMCore/PassManager.cpp:1.66 llvm/lib/VMCore/PassManager.cpp:1.67
--- llvm/lib/VMCore/PassManager.cpp:1.66	Fri Dec  8 16:34:02 2006
+++ llvm/lib/VMCore/PassManager.cpp	Fri Dec  8 16:47:25 2006
@@ -137,6 +137,10 @@
     return ImmutablePasses;
   }
 
+  void addPassManager(Pass *Manager) {
+    PassManagers.push_back(Manager);
+  }
+
 private:
   
   /// Collection of pass managers
@@ -479,9 +483,6 @@
   /// Add a pass into a passmanager queue.
   bool addPass(Pass *p);
 
-  // Collection of pass managers
-  std::vector<ModulePassManager_New *> PassManagers;
-
   // Active Pass Manager
   ModulePassManager_New *activeManager;
 };
@@ -1018,7 +1019,7 @@
 
   if (!activeManager || !activeManager->addPass(P)) {
     activeManager = new ModulePassManager_New(getDepth() + 1);
-    PassManagers.push_back(activeManager);
+    addPassManager(activeManager);
     return activeManager->addPass(P);
   }
   return true;
@@ -1029,10 +1030,10 @@
 bool PassManagerImpl_New::run(Module &M) {
 
   bool Changed = false;
-  for (std::vector<ModulePassManager_New *>::iterator itr = PassManagers.begin(),
-         e = PassManagers.end(); itr != e; ++itr) {
-    ModulePassManager_New *pm = *itr;
-    Changed |= pm->runOnModule(M);
+  for (std::vector<Pass *>::iterator I = passManagersBegin(),
+         E = passManagersEnd(); I != E; ++I) {
+    ModulePassManager_New *MP = dynamic_cast<ModulePassManager_New *>(*I);
+    Changed |= MP->runOnModule(M);
   }
   return Changed;
 }






More information about the llvm-commits mailing list