diff options
author | Devang Patel <dpatel@apple.com> | 2006-12-07 20:03:49 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2006-12-07 20:03:49 +0000 |
commit | 04b4e0595ffffab232a73a78d742e08efb6ebcfb (patch) | |
tree | a219478e5e3115f2cf01848c9e56865f37cd83cf | |
parent | 66d72e140bf7bdfe03383bfb4d3fe53a420d147b (diff) |
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
-rw-r--r-- | lib/VMCore/PassManager.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 9585b0dbce..77820ad6a8 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<AnalysisID> &PreservedSet = AnUsage.getPreservedSet(); + if (AnUsage.getPreservesAll()) + return; + + const std::vector<AnalysisID> &PreservedSet = AnUsage.getPreservedSet(); for (std::map<AnalysisID, Pass*>::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 |