diff options
author | Owen Anderson <resistor@mac.com> | 2010-07-20 01:19:58 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2010-07-20 01:19:58 +0000 |
commit | 8ba15cb7099d9eadcb345328228d77ffa5afa42d (patch) | |
tree | 48778ce4b577178912f4a72d48b761056aae92ae /lib | |
parent | fb272ad614e923bebdf226ff9d3fbce5e2ae1192 (diff) | |
download | llvm-8ba15cb7099d9eadcb345328228d77ffa5afa42d.tar.gz llvm-8ba15cb7099d9eadcb345328228d77ffa5afa42d.tar.bz2 llvm-8ba15cb7099d9eadcb345328228d77ffa5afa42d.tar.xz |
Separate PassInfo into two classes: a constructor-free superclass (StaticPassInfo) and a constructor-ful subclass (PassInfo).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108794 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Analysis/AliasAnalysisCounter.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/AliasDebugger.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/BasicAliasAnalysis.cpp | 4 | ||||
-rw-r--r-- | lib/Analysis/IPA/CallGraph.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/IPA/GlobalsModRef.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/ProfileEstimatorPass.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/ProfileInfoLoaderPass.cpp | 2 | ||||
-rw-r--r-- | lib/Analysis/ScalarEvolutionAliasAnalysis.cpp | 2 | ||||
-rw-r--r-- | lib/VMCore/Pass.cpp | 42 | ||||
-rw-r--r-- | lib/VMCore/PassManager.cpp | 19 |
10 files changed, 41 insertions, 38 deletions
diff --git a/lib/Analysis/AliasAnalysisCounter.cpp b/lib/Analysis/AliasAnalysisCounter.cpp index 1053955ea2..7d90860448 100644 --- a/lib/Analysis/AliasAnalysisCounter.cpp +++ b/lib/Analysis/AliasAnalysisCounter.cpp @@ -87,7 +87,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it /// should override this to adjust the this pointer as needed for the /// specified pass info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&AliasAnalysis::ID)) return (AliasAnalysis*)this; return this; diff --git a/lib/Analysis/AliasDebugger.cpp b/lib/Analysis/AliasDebugger.cpp index bc2d9c55d1..578bc68bd3 100644 --- a/lib/Analysis/AliasDebugger.cpp +++ b/lib/Analysis/AliasDebugger.cpp @@ -83,7 +83,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it /// should override this to adjust the this pointer as needed for the /// specified pass info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&AliasAnalysis::ID)) return (AliasAnalysis*)this; return this; diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp index 4f53a6d625..91a17e5106 100644 --- a/lib/Analysis/BasicAliasAnalysis.cpp +++ b/lib/Analysis/BasicAliasAnalysis.cpp @@ -172,7 +172,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it should /// override this to adjust the this pointer as needed for the specified pass /// info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&AliasAnalysis::ID)) return (AliasAnalysis*)this; return this; @@ -243,7 +243,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it should /// override this to adjust the this pointer as needed for the specified pass /// info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&AliasAnalysis::ID)) return (AliasAnalysis*)this; return this; diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp index 65c7c6efd8..fc0d33d5dc 100644 --- a/lib/Analysis/IPA/CallGraph.cpp +++ b/lib/Analysis/IPA/CallGraph.cpp @@ -86,7 +86,7 @@ public: /// an analysis interface through multiple inheritance. If needed, it should /// override this to adjust the this pointer as needed for the specified pass /// info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&CallGraph::ID)) return (CallGraph*)this; return this; diff --git a/lib/Analysis/IPA/GlobalsModRef.cpp b/lib/Analysis/IPA/GlobalsModRef.cpp index f13deea41d..7e328ef85e 100644 --- a/lib/Analysis/IPA/GlobalsModRef.cpp +++ b/lib/Analysis/IPA/GlobalsModRef.cpp @@ -149,7 +149,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it /// should override this to adjust the this pointer as needed for the /// specified pass info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&AliasAnalysis::ID)) return (AliasAnalysis*)this; return this; diff --git a/lib/Analysis/ProfileEstimatorPass.cpp b/lib/Analysis/ProfileEstimatorPass.cpp index da4ce47692..a06d0fc8b3 100644 --- a/lib/Analysis/ProfileEstimatorPass.cpp +++ b/lib/Analysis/ProfileEstimatorPass.cpp @@ -59,7 +59,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it /// should override this to adjust the this pointer as needed for the /// specified pass info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&ProfileInfo::ID)) return (ProfileInfo*)this; return this; diff --git a/lib/Analysis/ProfileInfoLoaderPass.cpp b/lib/Analysis/ProfileInfoLoaderPass.cpp index 8ea4ecf54f..90f40406a6 100644 --- a/lib/Analysis/ProfileInfoLoaderPass.cpp +++ b/lib/Analysis/ProfileInfoLoaderPass.cpp @@ -67,7 +67,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it /// should override this to adjust the this pointer as needed for the /// specified pass info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&ProfileInfo::ID)) return (ProfileInfo*)this; return this; diff --git a/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp b/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp index 58711b8be5..11885b2b1a 100644 --- a/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp +++ b/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp @@ -40,7 +40,7 @@ namespace { /// an analysis interface through multiple inheritance. If needed, it /// should override this to adjust the this pointer as needed for the /// specified pass info. - virtual void *getAdjustedAnalysisPointer(const PassInfo *PI) { + virtual void *getAdjustedAnalysisPointer(const StaticPassInfo *PI) { if (PI->isPassID(&AliasAnalysis::ID)) return (AliasAnalysis*)this; return this; diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index efd98af0f4..f78e85596b 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -75,7 +75,7 @@ void Pass::dumpPassStructure(unsigned Offset) { /// Registration templates, but can be overloaded directly. /// const char *Pass::getPassName() const { - if (const PassInfo *PI = getPassInfo()) + if (const StaticPassInfo *PI = getPassInfo()) return PI->getPassName(); return "Unnamed pass: implement Pass::getPassName()"; } @@ -101,7 +101,7 @@ void Pass::verifyAnalysis() const { // By default, don't do anything. } -void *Pass::getAdjustedAnalysisPointer(const PassInfo *) { +void *Pass::getAdjustedAnalysisPointer(const StaticPassInfo *) { return this; } @@ -243,35 +243,35 @@ class PassRegistrar { /// PassInfoMap - Keep track of the passinfo object for each registered llvm /// pass. - typedef std::map<intptr_t, const PassInfo*> MapType; + typedef std::map<intptr_t, const StaticPassInfo*> MapType; MapType PassInfoMap; - typedef StringMap<const PassInfo*> StringMapType; + typedef StringMap<const StaticPassInfo*> StringMapType; StringMapType PassInfoStringMap; /// AnalysisGroupInfo - Keep track of information for each analysis group. struct AnalysisGroupInfo { - std::set<const PassInfo *> Implementations; + std::set<const StaticPassInfo *> Implementations; }; /// AnalysisGroupInfoMap - Information for each analysis group. - std::map<const PassInfo *, AnalysisGroupInfo> AnalysisGroupInfoMap; + std::map<const StaticPassInfo *, AnalysisGroupInfo> AnalysisGroupInfoMap; public: - const PassInfo *GetPassInfo(intptr_t TI) const { + const StaticPassInfo *GetPassInfo(intptr_t TI) const { sys::SmartScopedLock<true> Guard(Lock); MapType::const_iterator I = PassInfoMap.find(TI); return I != PassInfoMap.end() ? I->second : 0; } - const PassInfo *GetPassInfo(StringRef Arg) const { + const StaticPassInfo *GetPassInfo(StringRef Arg) const { sys::SmartScopedLock<true> Guard(Lock); StringMapType::const_iterator I = PassInfoStringMap.find(Arg); return I != PassInfoStringMap.end() ? I->second : 0; } - void RegisterPass(const PassInfo &PI) { + void RegisterPass(const StaticPassInfo &PI) { sys::SmartScopedLock<true> Guard(Lock); bool Inserted = PassInfoMap.insert(std::make_pair(PI.getTypeInfo(),&PI)).second; @@ -279,7 +279,7 @@ public: PassInfoStringMap[PI.getPassArgument()] = &PI; } - void UnregisterPass(const PassInfo &PI) { + void UnregisterPass(const StaticPassInfo &PI) { sys::SmartScopedLock<true> Guard(Lock); MapType::iterator I = PassInfoMap.find(PI.getTypeInfo()); assert(I != PassInfoMap.end() && "Pass registered but not in map!"); @@ -298,8 +298,8 @@ public: /// Analysis Group Mechanisms. - void RegisterAnalysisGroup(PassInfo *InterfaceInfo, - const PassInfo *ImplementationInfo, + void RegisterAnalysisGroup(StaticPassInfo *InterfaceInfo, + const StaticPassInfo *ImplementationInfo, bool isDefault) { sys::SmartScopedLock<true> Guard(Lock); AnalysisGroupInfo &AGI = AnalysisGroupInfoMap[InterfaceInfo]; @@ -363,15 +363,15 @@ ManagedCleanup<&cleanupPassRegistrar> registrarCleanup ATTRIBUTE_USED; // getPassInfo - Return the PassInfo data structure that corresponds to this // pass... -const PassInfo *Pass::getPassInfo() const { +const StaticPassInfo *Pass::getPassInfo() const { return lookupPassInfo(PassID); } -const PassInfo *Pass::lookupPassInfo(intptr_t TI) { +const StaticPassInfo *Pass::lookupPassInfo(intptr_t TI) { return getPassRegistrar()->GetPassInfo(TI); } -const PassInfo *Pass::lookupPassInfo(StringRef Arg) { +const StaticPassInfo *Pass::lookupPassInfo(StringRef Arg) { return getPassRegistrar()->GetPassInfo(Arg); } @@ -390,7 +390,7 @@ void PassInfo::unregisterPass() { getPassRegistrar()->UnregisterPass(*this); } -Pass *PassInfo::createPass() const { +Pass *StaticPassInfo::createPass() const { assert((!isAnalysisGroup() || NormalCtor) && "No default implementation found for analysis group!"); assert(NormalCtor && @@ -408,8 +408,8 @@ RegisterAGBase::RegisterAGBase(const char *Name, intptr_t InterfaceID, intptr_t PassID, bool isDefault) : PassInfo(Name, InterfaceID) { - PassInfo *InterfaceInfo = - const_cast<PassInfo*>(Pass::lookupPassInfo(InterfaceID)); + StaticPassInfo *InterfaceInfo = + const_cast<StaticPassInfo*>(Pass::lookupPassInfo(InterfaceID)); if (InterfaceInfo == 0) { // First reference to Interface, register it now. registerPass(); @@ -419,13 +419,13 @@ RegisterAGBase::RegisterAGBase(const char *Name, intptr_t InterfaceID, "Trying to join an analysis group that is a normal pass!"); if (PassID) { - const PassInfo *ImplementationInfo = Pass::lookupPassInfo(PassID); + const StaticPassInfo *ImplementationInfo = Pass::lookupPassInfo(PassID); assert(ImplementationInfo && "Must register pass before adding to AnalysisGroup!"); // Make sure we keep track of the fact that the implementation implements // the interface. - PassInfo *IIPI = const_cast<PassInfo*>(ImplementationInfo); + StaticPassInfo *IIPI = const_cast<StaticPassInfo*>(ImplementationInfo); IIPI->addInterfaceImplemented(InterfaceInfo); getPassRegistrar()->RegisterAnalysisGroup(InterfaceInfo, IIPI, isDefault); @@ -479,7 +479,7 @@ namespace { VectorType &CFGOnlyList; GetCFGOnlyPasses(VectorType &L) : CFGOnlyList(L) {} - void passEnumerate(const PassInfo *P) { + void passEnumerate(const StaticPassInfo *P) { if (P->isCFGOnlyPass()) CFGOnlyList.push_back(P); } diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 4cf5501379..9e0be3b968 100644 --- a/lib/VMCore/PassManager.cpp +++ b/lib/VMCore/PassManager.cpp @@ -332,7 +332,8 @@ public: /// Return function pass corresponding to PassInfo PI, that is /// required by module pass MP. Instantiate analysis pass, by using /// its runOnFunction() for function F. - virtual Pass* getOnTheFlyPass(Pass *MP, const PassInfo *PI, Function &F); + virtual Pass* getOnTheFlyPass(Pass *MP, const StaticPassInfo *PI, + Function &F); virtual const char *getPassName() const { return "Module Pass Manager"; @@ -632,7 +633,7 @@ Pass *PMTopLevelManager::findAnalysisPass(AnalysisID AID) { for (SmallVector<ImmutablePass *, 8>::iterator I = ImmutablePasses.begin(), E = ImmutablePasses.end(); P == NULL && I != E; ++I) { - const PassInfo *PI = (*I)->getPassInfo(); + const StaticPassInfo *PI = (*I)->getPassInfo(); if (PI == AID) P = *I; @@ -728,7 +729,7 @@ PMTopLevelManager::~PMTopLevelManager() { /// Augement AvailableAnalysis by adding analysis made available by pass P. void PMDataManager::recordAvailableAnalysis(Pass *P) { - const PassInfo *PI = P->getPassInfo(); + const StaticPassInfo *PI = P->getPassInfo(); if (PI == 0) return; AvailableAnalysis[PI] = P; @@ -867,7 +868,7 @@ void PMDataManager::freePass(Pass *P, StringRef Msg, P->releaseMemory(); } - if (const PassInfo *PI = P->getPassInfo()) { + if (const StaticPassInfo *PI = P->getPassInfo()) { // Remove the pass itself (if it is not already removed). AvailableAnalysis.erase(PI); @@ -1051,7 +1052,7 @@ void PMDataManager::dumpPassArguments() const { if (PMDataManager *PMD = (*I)->getAsPMDataManager()) PMD->dumpPassArguments(); else - if (const PassInfo *PI = (*I)->getPassInfo()) + if (const StaticPassInfo *PI = (*I)->getPassInfo()) if (!PI->isAnalysisGroup()) dbgs() << " -" << PI->getPassArgument(); } @@ -1154,7 +1155,8 @@ void PMDataManager::addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) { llvm_unreachable("Unable to schedule pass"); } -Pass *PMDataManager::getOnTheFlyPass(Pass *P, const PassInfo *PI, Function &F) { +Pass *PMDataManager::getOnTheFlyPass(Pass *P, const StaticPassInfo *PI, + Function &F) { assert(0 && "Unable to find on the fly pass"); return NULL; } @@ -1173,7 +1175,7 @@ Pass *AnalysisResolver::getAnalysisIfAvailable(AnalysisID ID, bool dir) const { return PM.findAnalysisPass(ID, dir); } -Pass *AnalysisResolver::findImplPass(Pass *P, const PassInfo *AnalysisPI, +Pass *AnalysisResolver::findImplPass(Pass *P, const StaticPassInfo *AnalysisPI, Function &F) { return PM.getOnTheFlyPass(P, AnalysisPI, F); } @@ -1568,7 +1570,8 @@ void MPPassManager::addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) { /// Return function pass corresponding to PassInfo PI, that is /// required by module pass MP. Instantiate analysis pass, by using /// its runOnFunction() for function F. -Pass* MPPassManager::getOnTheFlyPass(Pass *MP, const PassInfo *PI, Function &F){ +Pass* MPPassManager::getOnTheFlyPass(Pass *MP, const StaticPassInfo *PI, + Function &F){ FunctionPassManagerImpl *FPP = OnTheFlyManagers[MP]; assert(FPP && "Unable to find on the fly pass"); |