summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2006-12-12 22:47:13 +0000
committerDevang Patel <dpatel@apple.com>2006-12-12 22:47:13 +0000
commit10c2ca68740b6d86d318e2393728cd736db3aced (patch)
tree06d7fe5f6dcc5d30a823e69c34d8a4bd6ebca12f
parentafb1f362c69a34f9c3ab045a75fe0719d26616b9 (diff)
downloadbcm5719-llvm-10c2ca68740b6d86d318e2393728cd736db3aced.tar.gz
bcm5719-llvm-10c2ca68740b6d86d318e2393728cd736db3aced.zip
Fix thinko.
While searching for a analysis in a pass manager, do not search it into pass manager's manager. llvm-svn: 32501
-rw-r--r--llvm/lib/VMCore/PassManager.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp
index 8ca466cfa86..38a598cc0e7 100644
--- a/llvm/lib/VMCore/PassManager.cpp
+++ b/llvm/lib/VMCore/PassManager.cpp
@@ -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(),
OpenPOWER on IntegriCloud