1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

Make getAnalysisToUpdate<AnalysisType>() public so that transformation APIs

can update analysis information.

llvm-svn: 3584
This commit is contained in:
Chris Lattner 2002-09-06 02:14:47 +00:00
parent 8cb7abfc07
commit 205af87264

View 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>;