[llvm-commits] CVS: llvm/lib/VMCore/PassManager.cpp

Devang Patel dpatel at apple.com
Wed Dec 13 15:50:59 PST 2006



Changes in directory llvm/lib/VMCore:

PassManager.cpp updated: 1.97 -> 1.98
---
Log message:

Add debug-pass=Executions support in new pass manager.


---
Diffs of the changes:  (+27 -6)

 PassManager.cpp |   33 +++++++++++++++++++++++++++------
 1 files changed, 27 insertions(+), 6 deletions(-)


Index: llvm/lib/VMCore/PassManager.cpp
diff -u llvm/lib/VMCore/PassManager.cpp:1.97 llvm/lib/VMCore/PassManager.cpp:1.98
--- llvm/lib/VMCore/PassManager.cpp:1.97	Wed Dec 13 16:10:00 2006
+++ llvm/lib/VMCore/PassManager.cpp	Wed Dec 13 17:50:44 2006
@@ -244,7 +244,7 @@
   void removeNotPreservedAnalysis(Pass *P);
   
   /// Remove dead passes
-  void removeDeadPasses(Pass *P);
+  void removeDeadPasses(Pass *P, std::string &Msg);
 
   /// Add pass P into the PassVector. Update 
   /// AvailableAnalysis appropriately if ProcessAnalysis is true.
@@ -312,6 +312,15 @@
     }
   }
 
+  void dumpPassInfo(Pass *P,  std::string &Msg1, std::string &Msg2) {
+    if (PassDebugging_New < Executions)
+      return;
+    cerr << (void*)this << std::string(getDepth()*2+1, ' ');
+    cerr << Msg1;
+    cerr << P->getPassName();
+    cerr << Msg2;
+  }
+
 protected:
 
   // Collection of pass whose last user asked this manager to claim
@@ -572,7 +581,6 @@
         LastUser[LUI->first] = P;
     }
   }
-
 }
 
 /// Collect passes whose last user is P
@@ -734,13 +742,17 @@
 }
 
 /// Remove analysis passes that are not used any longer
-void PMDataManager::removeDeadPasses(Pass *P) {
+void PMDataManager::removeDeadPasses(Pass *P, std::string &Msg) {
 
   std::vector<Pass *> DeadPasses;
   TPM->collectLastUses(DeadPasses, P);
 
   for (std::vector<Pass *>::iterator I = DeadPasses.begin(),
          E = DeadPasses.end(); I != E; ++I) {
+
+    std::string Msg1 = "  Freeing Pass '";
+    dumpPassInfo(*I, Msg1, Msg);
+
     (*I)->releaseMemory();
     
     std::map<AnalysisID, Pass*>::iterator Pos = 
@@ -910,12 +922,15 @@
     for (std::vector<Pass *>::iterator itr = passVectorBegin(),
            e = passVectorEnd(); itr != e; ++itr) {
       Pass *P = *itr;
+      std::string Msg1 = "Executing Pass '";
+      std::string Msg2 = "' on BasicBlock '" + (*I).getName() + "'...\n";
+      dumpPassInfo(P, Msg1, Msg2);
       initializeAnalysisImpl(P);
       BasicBlockPass *BP = dynamic_cast<BasicBlockPass*>(P);
       Changed |= BP->runOnBasicBlock(*I);
       removeNotPreservedAnalysis(P);
       recordAvailableAnalysis(P);
-      removeDeadPasses(P);
+      removeDeadPasses(P, Msg2);
     }
   return Changed | doFinalization(F);
 }
@@ -1129,12 +1144,15 @@
   for (std::vector<Pass *>::iterator itr = passVectorBegin(),
          e = passVectorEnd(); itr != e; ++itr) {
     Pass *P = *itr;
+    std::string Msg1 = "Executing Pass '";
+    std::string Msg2 = "' on Function '" + F.getName() + "'...\n";
+    dumpPassInfo(P, Msg1, Msg2);
     initializeAnalysisImpl(P);    
     FunctionPass *FP = dynamic_cast<FunctionPass*>(P);
     Changed |= FP->runOnFunction(F);
     removeNotPreservedAnalysis(P);
     recordAvailableAnalysis(P);
-    removeDeadPasses(P);
+    removeDeadPasses(P, Msg2);
   }
   return Changed;
 }
@@ -1258,12 +1276,15 @@
   for (std::vector<Pass *>::iterator itr = passVectorBegin(),
          e = passVectorEnd(); itr != e; ++itr) {
     Pass *P = *itr;
+    std::string Msg1 = "Executing Pass '";
+    std::string Msg2 = "' on Module '" + M.getModuleIdentifier() + "'...\n";
+    dumpPassInfo(P, Msg1, Msg2);
     initializeAnalysisImpl(P);
     ModulePass *MP = dynamic_cast<ModulePass*>(P);
     Changed |= MP->runOnModule(M);
     removeNotPreservedAnalysis(P);
     recordAvailableAnalysis(P);
-    removeDeadPasses(P);
+    removeDeadPasses(P, Msg2);
   }
   return Changed;
 }






More information about the llvm-commits mailing list