From: Devang Patel Date: Thu, 7 Dec 2006 20:03:49 +0000 (+0000) Subject: If pass reserves all analysis info then each info is not separately X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=04b4e0595ffffab232a73a78d742e08efb6ebcfb;p=oota-llvm.git If pass reserves all analysis info then each info is not separately included in PreservedSet. So check getPreservesAll() first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32319 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 9585b0dbce3..77820ad6a8e 100644 --- a/lib/VMCore/PassManager.cpp +++ b/lib/VMCore/PassManager.cpp @@ -436,8 +436,11 @@ void PMDataManager::recordAvailableAnalysis(Pass *P) { void PMDataManager::removeNotPreservedAnalysis(Pass *P) { AnalysisUsage AnUsage; P->getAnalysisUsage(AnUsage); - const std::vector &PreservedSet = AnUsage.getPreservedSet(); + if (AnUsage.getPreservesAll()) + return; + + const std::vector &PreservedSet = AnUsage.getPreservedSet(); for (std::map::iterator I = AvailableAnalysis.begin(), E = AvailableAnalysis.end(); I != E; ++I ) { if (std::find(PreservedSet.begin(), PreservedSet.end(), I->first) == @@ -470,8 +473,8 @@ void PMDataManager::removeDeadPasses(Pass *P) { /// Add pass P into the PassVector. Update /// AvailableAnalysis appropriately if ProcessAnalysis is true. -void PMDataManager::addPassToManager (Pass *P, - bool ProcessAnalysis) { +void PMDataManager::addPassToManager(Pass *P, + bool ProcessAnalysis) { if (ProcessAnalysis) { // Take a note of analysis required and made available by this pass