Don't call getAnalysisUsage unless -debug-pass is enabled. This speeds
authorChris Lattner <sabre@nondot.org>
Fri, 8 Aug 2008 15:14:09 +0000 (15:14 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 8 Aug 2008 15:14:09 +0000 (15:14 +0000)
up the passmgr by avoiding useless work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54528 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/PassManagers.h
lib/Analysis/IPA/CallGraphSCCPass.cpp
lib/Analysis/LoopPass.cpp
lib/VMCore/PassManager.cpp

index c9944b5c87f3082530127f2c6eb1be89a81171d7..5d90a22920267594ba72ce6065cd778c88d9ac36 100644 (file)
@@ -308,8 +308,8 @@ public:
   void dumpPassArguments() const;
   void dumpPassInfo(Pass *P, enum PassDebuggingString S1,
                     enum PassDebuggingString S2, const char *Msg);
-  void dumpAnalysisSetInfo(const char *Msg, Pass *P,
-                           const AnalysisUsage::VectorType &Set) const;
+  void dumpRequiredSet(const Pass *P) const;
+  void dumpPreservedSet(const Pass *P) const;
 
   virtual unsigned getNumContainedPasses() const {
     return (unsigned)PassVector.size();
@@ -346,6 +346,9 @@ protected:
   std::map<AnalysisID, Pass *> *InheritedAnalysis[PMT_Last];
 
 private:
+  void dumpAnalysisUsage(const char *Msg, const Pass *P,
+                           const AnalysisUsage::VectorType &Set) const;
+
   // Set of available Analysis. This information is used while scheduling 
   // pass. If a pass requires an analysis which is not not available then 
   // equired analysis pass is scheduled to run before the pass itself is 
index 112f9c2e5df747891685e3a66078c116e8f4fa21..4a0e4cfe057d5413d1aca3c0f9cb5a9bcd3958d7 100644 (file)
@@ -91,11 +91,9 @@ bool CGPassManager::runOnModule(Module &M) {
     // Run all passes on current SCC
     for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
       Pass *P = getContainedPass(Index);
-      AnalysisUsage AnUsage;
-      P->getAnalysisUsage(AnUsage);
 
       dumpPassInfo(P, EXECUTION_MSG, ON_CG_MSG, "");
-      dumpAnalysisSetInfo("Required", P, AnUsage.getRequiredSet());
+      dumpRequiredSet(P);
 
       initializeAnalysisImpl(P);
 
@@ -120,7 +118,7 @@ bool CGPassManager::runOnModule(Module &M) {
 
       if (Changed)
         dumpPassInfo(P, MODIFICATION_MSG, ON_CG_MSG, "");
-      dumpAnalysisSetInfo("Preserved", P, AnUsage.getPreservedSet());
+      dumpPreservedSet(P);
 
       verifyPreservedAnalysis(P);      
       removeNotPreservedAnalysis(P);
index 460a1b04f70945c244f56ee1091e703882c2239c..b9e5f99f07c52f1aef1aa1e237c94487551df25e 100644 (file)
@@ -214,11 +214,9 @@ bool LPPassManager::runOnFunction(Function &F) {
     for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {  
         
       Pass *P = getContainedPass(Index);
-      AnalysisUsage AnUsage;
-      P->getAnalysisUsage(AnUsage);
 
       dumpPassInfo(P, EXECUTION_MSG, ON_LOOP_MSG, "");
-      dumpAnalysisSetInfo("Required", P, AnUsage.getRequiredSet());
+      dumpRequiredSet(P);
 
       initializeAnalysisImpl(P);
 
@@ -230,7 +228,7 @@ bool LPPassManager::runOnFunction(Function &F) {
 
       if (Changed)
         dumpPassInfo(P, MODIFICATION_MSG, ON_LOOP_MSG, "");
-      dumpAnalysisSetInfo("Preserved", P, AnUsage.getPreservedSet());
+      dumpPreservedSet(P);
 
       verifyPreservedAnalysis(LP);
       removeNotPreservedAnalysis(P);
index e48ea81ea03b9317de4f891343166306c1a9852a..fc3621a7345045d6034b029f6fcc20b975d00bc6 100644 (file)
@@ -954,17 +954,38 @@ void PMDataManager::dumpPassInfo(Pass *P, enum PassDebuggingString S1,
   }
 }
 
-void PMDataManager::dumpAnalysisSetInfo(const char *Msg, Pass *P,
+void PMDataManager::dumpRequiredSet(const Pass *P)
+  const {
+  if (PassDebugging < Details)
+    return;
+    
+  AnalysisUsage analysisUsage;
+  P->getAnalysisUsage(analysisUsage);
+  dumpAnalysisUsage("Required", P, analysisUsage.getRequiredSet());
+}
+
+void PMDataManager::dumpPreservedSet(const Pass *P)
+  const {
+  if (PassDebugging < Details)
+    return;
+    
+  AnalysisUsage analysisUsage;
+  P->getAnalysisUsage(analysisUsage);
+  dumpAnalysisUsage("Preserved", P, analysisUsage.getPreservedSet());
+}
+
+void PMDataManager::dumpAnalysisUsage(const char *Msg, const Pass *P,
                                         const AnalysisUsage::VectorType &Set)
   const {
-  if (PassDebugging >= Details && !Set.empty()) {
-    cerr << (void*)P << std::string(getDepth()*2+3, ' ') << Msg << " Analyses:";
-      for (unsigned i = 0; i != Set.size(); ++i) {
-        if (i) cerr << ",";
-        cerr << " " << Set[i]->getPassName();
-      }
-      cerr << "\n";
-  }
+  assert(PassDebugging >= Details);
+  if (Set.empty())
+    return;
+  cerr << (void*)P << std::string(getDepth()*2+3, ' ') << Msg << " Analyses:";
+    for (unsigned i = 0; i != Set.size(); ++i) {
+      if (i) cerr << ",";
+      cerr << " " << Set[i]->getPassName();
+    }
+    cerr << "\n";
 }
 
 /// Add RequiredPass into list of lower level passes required by pass P.
@@ -1031,11 +1052,9 @@ BBPassManager::runOnFunction(Function &F) {
   for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I)
     for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
       BasicBlockPass *BP = getContainedPass(Index);
-      AnalysisUsage AnUsage;
-      BP->getAnalysisUsage(AnUsage);
 
       dumpPassInfo(BP, EXECUTION_MSG, ON_BASICBLOCK_MSG, I->getNameStart());
-      dumpAnalysisSetInfo("Required", BP, AnUsage.getRequiredSet());
+      dumpRequiredSet(BP);
 
       initializeAnalysisImpl(BP);
 
@@ -1046,7 +1065,7 @@ BBPassManager::runOnFunction(Function &F) {
       if (Changed) 
         dumpPassInfo(BP, MODIFICATION_MSG, ON_BASICBLOCK_MSG,
                      I->getNameStart());
-      dumpAnalysisSetInfo("Preserved", BP, AnUsage.getPreservedSet());
+      dumpPreservedSet(BP);
 
       verifyPreservedAnalysis(BP);
       removeNotPreservedAnalysis(BP);
@@ -1232,11 +1251,8 @@ bool FPPassManager::runOnFunction(Function &F) {
   for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
     FunctionPass *FP = getContainedPass(Index);
 
-    AnalysisUsage AnUsage;
-    FP->getAnalysisUsage(AnUsage);
-
     dumpPassInfo(FP, EXECUTION_MSG, ON_FUNCTION_MSG, F.getNameStart());
-    dumpAnalysisSetInfo("Required", FP, AnUsage.getRequiredSet());
+    dumpRequiredSet(FP);
 
     initializeAnalysisImpl(FP);
 
@@ -1246,7 +1262,7 @@ bool FPPassManager::runOnFunction(Function &F) {
 
     if (Changed) 
       dumpPassInfo(FP, MODIFICATION_MSG, ON_FUNCTION_MSG, F.getNameStart());
-    dumpAnalysisSetInfo("Preserved", FP, AnUsage.getPreservedSet());
+    dumpPreservedSet(FP);
 
     verifyPreservedAnalysis(FP);
     removeNotPreservedAnalysis(FP);
@@ -1304,12 +1320,9 @@ MPPassManager::runOnModule(Module &M) {
   for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
     ModulePass *MP = getContainedPass(Index);
 
-    AnalysisUsage AnUsage;
-    MP->getAnalysisUsage(AnUsage);
-
     dumpPassInfo(MP, EXECUTION_MSG, ON_MODULE_MSG,
                  M.getModuleIdentifier().c_str());
-    dumpAnalysisSetInfo("Required", MP, AnUsage.getRequiredSet());
+    dumpRequiredSet(MP);
 
     initializeAnalysisImpl(MP);
 
@@ -1320,7 +1333,7 @@ MPPassManager::runOnModule(Module &M) {
     if (Changed) 
       dumpPassInfo(MP, MODIFICATION_MSG, ON_MODULE_MSG,
                    M.getModuleIdentifier().c_str());
-    dumpAnalysisSetInfo("Preserved", MP, AnUsage.getPreservedSet());
+    dumpPreservedSet(MP);
     
     verifyPreservedAnalysis(MP);
     removeNotPreservedAnalysis(MP);