Update ModulePass::assignPassManager() to take into account Preferred
authorDevang Patel <dpatel@apple.com>
Wed, 17 Jan 2007 21:19:23 +0000 (21:19 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 17 Jan 2007 21:19:23 +0000 (21:19 +0000)
Pass Manager Type.

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

lib/VMCore/PassManager.cpp

index a137a7f70f7582c815a00a9cb62d18514a9b01c9..5d391444caa378cb95d7e7f14f079d3a833bb20f 100644 (file)
@@ -1207,15 +1207,16 @@ void ModulePass::assignPassManager(PMStack &PMS,
 
   // Find Module Pass Manager
   while(!PMS.empty()) {
-    if (PMS.top()->getPassManagerType() > PMT_ModulePassManager)
+    PassManagerType TopPMType = PMS.top()->getPassManagerType();
+    if (TopPMType == PreferredType)
+      break; // We found desired pass manager
+    else if (TopPMType > PMT_ModulePassManager)
       PMS.pop();    // Pop children pass managers
     else
       break;
   }
-  MPPassManager *MPP = dynamic_cast<MPPassManager *>(PMS.top());
 
-  assert(MPP && "Unable to find Module Pass Manager");
-  MPP->add(this);
+  PMS.top()->add(this);
 }
 
 /// Find appropriate Function Pass Manager or Call Graph Pass Manager