19 #ifndef LLVM_PASSANALYSISSUPPORT_H
20 #define LLVM_PASSANALYSISSUPPORT_H
43 VectorType Required, RequiredTransitive, Preserved;
54 template<
class PassClass>
60 template<
class PassClass>
80 template<
class PassClass>
110 return RequiredTransitive;
132 Pass *ResultPass = 0;
133 for (
unsigned i = 0; i < AnalysisImpls.size() ; ++i) {
134 if (AnalysisImpls[i].first == PI) {
135 ResultPass = AnalysisImpls[i].second;
148 std::pair<AnalysisID, Pass*> pir = std::make_pair(PI,P);
149 AnalysisImpls.push_back(pir);
155 AnalysisImpls.clear();
164 std::vector<std::pair<AnalysisID, Pass*> > AnalysisImpls;
178 template<
typename AnalysisType>
180 assert(Resolver &&
"Pass not resident in a PassManager object!");
185 if (ResultPass == 0)
return 0;
198 template<
typename AnalysisType>
200 assert(Resolver &&
"Pass has not been inserted into a PassManager object!");
204 template<
typename AnalysisType>
206 assert(PI &&
"getAnalysis for unregistered pass!");
207 assert(Resolver&&
"Pass has not been inserted into a PassManager object!");
212 assert (ResultPass &&
213 "getAnalysis*() called on an analysis that was not "
214 "'required' by pass!");
227 template<
typename AnalysisType>
229 assert(Resolver &&
"Pass has not been inserted into a PassManager object!");
234 template<
typename AnalysisType>
236 assert(PI &&
"getAnalysis for unregistered pass!");
237 assert(Resolver &&
"Pass has not been inserted into a PassManager object!");
242 assert(ResultPass &&
"Unable to find requested analysis info");
void push_back(const T &Elt)
AnalysisUsage & addPreserved()
AnalysisType & getAnalysisID(AnalysisID PI) const
const VectorType & getPreservedSet() const
AnalysisUsage & addRequired()
AnalysisType * getAnalysisIfAvailable() const
AnalysisUsage & addPreservedID(char &ID)
ID
LLVM Calling Convention Representation.
Pass * getAnalysisIfAvailable(AnalysisID ID, bool Direction) const
AnalysisUsage & addPreservedID(const void *ID)
AnalysisResolver(PMDataManager &P)
const VectorType & getRequiredTransitiveSet() const
AnalysisType & getAnalysis() const
AnalysisUsage & addRequiredID(const void *ID)
bool getPreservesAll() const
SmallVector< AnalysisID, 32 > VectorType
void addAnalysisImplsPair(AnalysisID PI, Pass *P)
#define LLVM_DELETED_FUNCTION
void clearAnalysisImpls()
Pass * findImplPass(AnalysisID PI)
const VectorType & getRequiredSet() const
PMDataManager & getPMDataManager()
AnalysisUsage & addRequiredTransitiveID(char &ID)
AnalysisUsage & addRequiredTransitive()
virtual void * getAdjustedAnalysisPointer(AnalysisID ID)