From: Devang Patel Date: Tue, 12 Dec 2006 22:50:05 +0000 (+0000) Subject: findAnalysisPass(). X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d0fa16c33615bb6f21685c4e4e3d948ac6780160;p=oota-llvm.git findAnalysisPass(). First search all available passes before searching ImmutablePasses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32503 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 38a598cc0e7..6e24f261b9b 100644 --- a/lib/VMCore/PassManager.cpp +++ b/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::iterator I = PassManagers.begin(), + E = PassManagers.end(); P == NULL && I != E; ++I) { + PMDataManager *PMD = dynamic_cast(*I); + assert(PMD && "This is not a PassManager"); + P = PMD->findAnalysisPass(AID, false); + } + + // Check other pass managers + for (std::vector::iterator I = IndirectPassManagers.begin(), + E = IndirectPassManagers.end(); P == NULL && I != E; ++I) + P = (*I)->findAnalysisPass(AID, false); + for (std::vector::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::iterator I = PassManagers.begin(), - E = PassManagers.end(); P == NULL && I != E; ++I) { - PMDataManager *PMD = dynamic_cast(*I); - assert(PMD && "This is not a PassManager"); - P = PMD->findAnalysisPass(AID, false); - } - - // Check other pass managers - for (std::vector::iterator I = IndirectPassManagers.begin(), - E = IndirectPassManagers.end(); P == NULL && I != E; ++I) - P = (*I)->findAnalysisPass(AID, false); - return P; }