diff options
author | Devang Patel <dpatel@apple.com> | 2006-12-12 22:50:05 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2006-12-12 22:50:05 +0000 |
commit | cd6ba153645933045ac63303ee68fdfd08c41d28 (patch) | |
tree | f44880584665209f000a5f0c3342c924343286ca | |
parent | 10c2ca68740b6d86d318e2393728cd736db3aced (diff) | |
download | bcm5719-llvm-cd6ba153645933045ac63303ee68fdfd08c41d28.tar.gz bcm5719-llvm-cd6ba153645933045ac63303ee68fdfd08c41d28.zip |
findAnalysisPass().
First search all available passes before searching ImmutablePasses.
llvm-svn: 32503
-rw-r--r-- | llvm/lib/VMCore/PassManager.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp index 38a598cc0e7..6e24f261b9b 100644 --- a/llvm/lib/VMCore/PassManager.cpp +++ b/llvm/lib/VMCore/PassManager.cpp @@ -512,6 +512,19 @@ void PMTopLevelManager::schedulePass(Pass *P) { Pass *PMTopLevelManager::findAnalysisPass(AnalysisID AID) { Pass *P = NULL; + // Check pass managers + for (std::vector<Pass *>::iterator I = PassManagers.begin(), + 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(), + E = IndirectPassManagers.end(); P == NULL && I != E; ++I) + P = (*I)->findAnalysisPass(AID, false); + for (std::vector<ImmutablePass *>::iterator I = ImmutablePasses.begin(), E = ImmutablePasses.end(); P == NULL && I != E; ++I) { const PassInfo *PI = (*I)->getPassInfo(); @@ -529,19 +542,6 @@ Pass *PMTopLevelManager::findAnalysisPass(AnalysisID AID) { } } - // Check pass managers - for (std::vector<Pass *>::iterator I = PassManagers.begin(), - 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(), - E = IndirectPassManagers.end(); P == NULL && I != E; ++I) - P = (*I)->findAnalysisPass(AID, false); - return P; } |