Make getAnalysisToUpdate<AnalysisType>() public so that transformation APIs
authorChris Lattner <sabre@nondot.org>
Fri, 6 Sep 2002 02:14:47 +0000 (02:14 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 6 Sep 2002 02:14:47 +0000 (02:14 +0000)
can update analysis information.

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

include/llvm/Pass.h

index 6f5f8d63b462236cbcff492343bd0240fe2bb0e1..cdd00300183756b25224d7194b46d55af5199551 100644 (file)
@@ -125,6 +125,22 @@ public:
   // or null if it is not known.
   static const PassInfo *lookupPassInfo(const std::type_info &TI);
 
+  /// getAnalysisToUpdate<AnalysisType>() - This function is used by subclasses
+  /// to get to the analysis information that might be around that needs to be
+  /// updated.  This is different than getAnalysis in that it can fail (ie the
+  /// analysis results haven't been computed), so should only be used if you
+  /// provide the capability to update an analysis that exists.  This method is
+  /// often used by transformation APIs to update analysis results for a pass
+  /// automatically as the transform is performed.
+  ///
+  template<typename AnalysisType>
+  AnalysisType *getAnalysisToUpdate() const {
+    assert(Resolver && "Pass not resident in a PassManager object!");
+    const PassInfo *PI = getClassPassInfo<AnalysisType>();
+    if (PI == 0) return 0;
+    return dynamic_cast<AnalysisType*>(Resolver->getAnalysisToUpdate(PI));
+  }
+
 protected:
 
   /// getAnalysis<AnalysisType>() - This function is used by subclasses to get
@@ -167,21 +183,6 @@ protected:
     return *Result;
   }
 
-  /// getAnalysisToUpdate<AnalysisType>() - This function is used by subclasses
-  /// to get to the analysis information that might be around that needs to be
-  /// updated.  This is different than getAnalysis in that it can fail (ie the
-  /// analysis results haven't been computed), so should only be used if you
-  /// provide the capability to update an analysis that exists.
-  ///
-  template<typename AnalysisType>
-  AnalysisType *getAnalysisToUpdate() const {
-    assert(Resolver && "Pass not resident in a PassManager object!");
-    const PassInfo *PI = getClassPassInfo<AnalysisType>();
-    if (PI == 0) return 0;
-    return dynamic_cast<AnalysisType*>(Resolver->getAnalysisToUpdate(PI));
-  }
-
-
 private:
   friend class PassManagerT<Module>;
   friend class PassManagerT<Function>;