Do not drop ImmutablePasses on the floor.
authorDevang Patel <dpatel@apple.com>
Fri, 8 Dec 2006 23:57:43 +0000 (23:57 +0000)
committerDevang Patel <dpatel@apple.com>
Fri, 8 Dec 2006 23:57:43 +0000 (23:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32386 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/PassManager.cpp

index 082491322283bf193c5bf7bcbbda3b2c50970217..688dfee195555a709dbc80ce7338b9061bcb97de 100644 (file)
@@ -394,15 +394,16 @@ public:
  
   inline void addTopLevelPass(Pass *P) { 
 
-    if (dynamic_cast<ImmutablePass *> (P)) {
+    if (ImmutablePass *IP = dynamic_cast<ImmutablePass *> (P)) {
 
       // P is a immutable pass then it will be managed by this
       // top level manager. Set up analysis resolver to connect them.
       AnalysisResolver_New *AR = new AnalysisResolver_New(*this);
       P->setResolver(AR);
-    }
-
-    addPass(P);
+      addImmutablePass(IP);
+    } 
+    else 
+      addPass(P);
   }
 
   /// add - Add a pass to the queue of passes to run.  This passes
@@ -498,15 +499,16 @@ public:
 
   inline void addTopLevelPass(Pass *P) {
 
-    if (dynamic_cast<ImmutablePass *> (P)) {
+    if (ImmutablePass *IP = dynamic_cast<ImmutablePass *> (P)) {
       
       // P is a immutable pass and it will be managed by this
       // top level manager. Set up analysis resolver to connect them.
       AnalysisResolver_New *AR = new AnalysisResolver_New(*this);
       P->setResolver(AR);
+      addImmutablePass(IP);
     }
-
-    addPass(P);
+    else 
+      addPass(P);
   }
 
 private: