Tidy up marking of last analysis user pass.
authorDevang Patel <dpatel@apple.com>
Wed, 15 Nov 2006 01:48:14 +0000 (01:48 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 15 Nov 2006 01:48:14 +0000 (01:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31746 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/PassManager.cpp

index 379162be36d871d8716601a8bfcbcf503dca799c..d0d54d4c4f736eede2e7e2c77e023305b73ca98b 100644 (file)
@@ -83,22 +83,9 @@ public:
     return PassVector.end();
   }
 
-  inline void setLastUser(Pass *P, Pass *LU) { 
+  inline void setLastUser(Pass *P, Pass *LU) {
     LastUser[P] = LU; 
     // TODO : Check if pass P is available.
-
-    // Prolong live range of analyses that are needed after an analysis pass
-    // is destroyed, for querying by subsequent passes
-    AnalysisUsage AnUsage;
-    P->getAnalysisUsage(AnUsage);
-    const std::vector<AnalysisID> &IDs = AnUsage.getRequiredTransitiveSet();
-    for (std::vector<AnalysisID>::const_iterator I = IDs.begin(),
-           E = IDs.end(); I != E; ++I) {
-      Pass *AnalysisPass = getAnalysisPass(*I); // getAnalysisPassFromManager(*I);
-      assert (AnalysisPass && "Analysis pass is not available");
-      setLastUser(AnalysisPass, LU);
-    }
-
   }
 
 private:
@@ -671,8 +658,17 @@ void PassManagerImpl_New::schedulePass(Pass *P) {
       schedulePass(AnalysisPass);
     }
     setLastUser (AnalysisPass, P);
+
+    // Prolong live range of analyses that are needed after an analysis pass
+    // is destroyed, for querying by subsequent passes
+    const std::vector<AnalysisID> &IDs = AnUsage.getRequiredTransitiveSet();
+    for (std::vector<AnalysisID>::const_iterator I = IDs.begin(),
+           E = IDs.end(); I != E; ++I) {
+      Pass *AP = getAnalysisPassFromManager(*I);
+      assert (AP && "Analysis pass is not available");
+      setLastUser(AP, P);
+    }
   }
-    
   addPass(P);
 }