[llvm-commits] CVS: llvm/lib/VMCore/PassManager.cpp
    Devang Patel 
    dpatel at apple.com
       
    Tue Dec 12 15:08:00 PST 2006
    
    
  
Changes in directory llvm/lib/VMCore:
PassManager.cpp updated: 1.83 -> 1.84
---
Log message:
removeNotPreservedAnalysis().
Do not remove ImmutablePass from the list.
---
Diffs of the changes:  (+8 -4)
 PassManager.cpp |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
Index: llvm/lib/VMCore/PassManager.cpp
diff -u llvm/lib/VMCore/PassManager.cpp:1.83 llvm/lib/VMCore/PassManager.cpp:1.84
--- llvm/lib/VMCore/PassManager.cpp:1.83	Tue Dec 12 16:57:43 2006
+++ llvm/lib/VMCore/PassManager.cpp	Tue Dec 12 17:07:44 2006
@@ -580,13 +580,17 @@
 
   const std::vector<AnalysisID> &PreservedSet = AnUsage.getPreservedSet();
   for (std::map<AnalysisID, Pass*>::iterator I = AvailableAnalysis.begin(),
-         E = AvailableAnalysis.end(); I != E; ++I ) {
+         E = AvailableAnalysis.end(); I != E; ) {
     if (std::find(PreservedSet.begin(), PreservedSet.end(), I->first) == 
         PreservedSet.end()) {
       // Remove this analysis
-      std::map<AnalysisID, Pass*>::iterator J = I++;
-      AvailableAnalysis.erase(J);
-    }
+      if (!dynamic_cast<ImmutablePass*>(I->second)) {
+        std::map<AnalysisID, Pass*>::iterator J = I++;
+        AvailableAnalysis.erase(J);
+      } else
+        ++I;
+    } else
+      ++I;
   }
 }
 
    
    
More information about the llvm-commits
mailing list