diff options
author | Chris Lattner <sabre@nondot.org> | 2002-09-06 02:14:47 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-09-06 02:14:47 +0000 |
commit | f9bbe214fdd7391d2798c6e2d3d281f02f6dcc43 (patch) | |
tree | 328149dfcd0d5613d3d68dbec890f2710e37ae39 /include/llvm | |
parent | 480e2efb2e3638cd202551ed53fb456d6179d5e0 (diff) | |
download | llvm-f9bbe214fdd7391d2798c6e2d3d281f02f6dcc43.tar.gz |
Make getAnalysisToUpdate<AnalysisType>() public so that transformation APIs
can update analysis information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3584 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/Pass.h | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h index 6f5f8d63b462..cdd003001837 100644 --- a/include/llvm/Pass.h +++ b/include/llvm/Pass.h @@ -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>; |