Fix thinko.
authorDevang Patel <dpatel@apple.com>
Tue, 12 Dec 2006 22:47:13 +0000 (22:47 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 12 Dec 2006 22:47:13 +0000 (22:47 +0000)
While searching for a analysis in a pass manager, do not search it into
pass manager's manager.

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

lib/VMCore/PassManager.cpp

index 8ca466cfa8647b034545fc9671e762b318d7727d..38a598cc0e7b0520734655fd034c95b9b3b2712f 100644 (file)
@@ -260,6 +260,9 @@ private:
   unsigned Depth;
 };
 
+//===----------------------------------------------------------------------===//
+// BasicBlockPassManager_New
+//
 /// BasicBlockPassManager_New manages BasicBlockPass. It batches all the
 /// pass together and sequence them to process one basic block before
 /// processing next basic block.
@@ -288,6 +291,9 @@ public:
 
 };
 
+//===----------------------------------------------------------------------===//
+// FunctionPassManagerImpl_New
+//
 /// FunctionPassManagerImpl_New manages FunctionPasses and BasicBlockPassManagers.
 /// It batches all function passes and basic block pass managers together and
 /// sequence them to process one function at a time before processing next
@@ -356,6 +362,9 @@ private:
   BasicBlockPassManager_New *activeBBPassManager;
 };
 
+//===----------------------------------------------------------------------===//
+// ModulePassManager_New
+//
 /// ModulePassManager_New manages ModulePasses and function pass managers.
 /// It batches all Module passes  passes and function pass managers together and
 /// sequence them to process one module.
@@ -384,7 +393,10 @@ private:
   FunctionPassManagerImpl_New *activeFunctionPassManager;
 };
 
-/// PassManager_New manages ModulePassManagers
+//===----------------------------------------------------------------------===//
+// PassManagerImpl_New
+//
+/// PassManagerImpl_New manages ModulePassManagers
 class PassManagerImpl_New : public Pass,
                             public PMDataManager,
                             public PMTopLevelManager {
@@ -519,8 +531,11 @@ Pass *PMTopLevelManager::findAnalysisPass(AnalysisID AID) {
 
   // Check pass managers
   for (std::vector<Pass *>::iterator I = PassManagers.begin(),
-         E = PassManagers.end(); P == NULL && I != E; ++I)
-    P = (*I)->getResolver()->getAnalysisToUpdate(AID, false);
+         E = PassManagers.end(); P == NULL && I != E; ++I) {
+    PMDataManager *PMD = dynamic_cast<PMDataManager *>(*I);
+    assert(PMD && "This is not a PassManager");
+    P = PMD->findAnalysisPass(AID, false);
+  }
 
   // Check other pass managers
   for (std::vector<PMDataManager *>::iterator I = IndirectPassManagers.begin(),