Changes in directory llvm/lib/VMCore:

PassManager.cpp updated: 1.57 -> 1.58
---
Log message:

Reimplement removeDeadPasses().


---
Diffs of the changes:  (+15 -1)

 PassManager.cpp |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletion(-)


Index: llvm/lib/VMCore/PassManager.cpp
diff -u llvm/lib/VMCore/PassManager.cpp:1.57 
llvm/lib/VMCore/PassManager.cpp:1.58
--- llvm/lib/VMCore/PassManager.cpp:1.57        Thu Dec  7 17:55:10 2006
+++ llvm/lib/VMCore/PassManager.cpp     Thu Dec  7 18:37:52 2006
@@ -522,7 +522,21 @@
 
 /// Remove analysis passes that are not used any longer
 void PMDataManager::removeDeadPasses(Pass *P) {
-  // TODO : reimplement
+
+  std::vector<Pass *> DeadPasses;
+  TPM->collectLastUses(DeadPasses, P);
+
+  for (std::vector<Pass *>::iterator I = DeadPasses.begin(),
+         E = DeadPasses.end(); I != E; ++I) {
+    (*I)->releaseMemory();
+    
+    std::map<AnalysisID, Pass*>::iterator Pos = 
+      AvailableAnalysis.find((*I)->getPassInfo());
+    
+    // It is possible that deadPass is already removed from the 
AvailableAnalysis
+    if (Pos != AvailableAnalysis.end())
+      AvailableAnalysis.erase(Pos);
+  }
 }
 
 /// Add pass P into the PassVector. Update 



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to