diff --git a/include/llvm/PassAnalysisSupport.h b/include/llvm/PassAnalysisSupport.h index 4d19858bc98..c6ed179af61 100644 --- a/include/llvm/PassAnalysisSupport.h +++ b/include/llvm/PassAnalysisSupport.h @@ -20,6 +20,7 @@ #define LLVM_PASS_ANALYSIS_SUPPORT_H #include +#include "llvm/ADT/SmallVector.h" namespace llvm { @@ -34,9 +35,14 @@ namespace llvm { // Pass infrastructure through the getAnalysisUsage virtual function. // class AnalysisUsage { +public: + typedef SmallVector VectorType; + +private: // Sets of analyses required and preserved by a pass - std::vector Required, RequiredTransitive, Preserved; + VectorType Required, RequiredTransitive, Preserved; bool PreservesAll; + public: AnalysisUsage() : PreservesAll(false) {} @@ -95,11 +101,11 @@ public: /// void setPreservesCFG(); - const std::vector &getRequiredSet() const { return Required; } - const std::vector &getRequiredTransitiveSet() const { + const VectorType &getRequiredSet() const { return Required; } + const VectorType &getRequiredTransitiveSet() const { return RequiredTransitive; } - const std::vector &getPreservedSet() const { return Preserved; } + const VectorType &getPreservedSet() const { return Preserved; } }; //===----------------------------------------------------------------------===// diff --git a/include/llvm/PassManagers.h b/include/llvm/PassManagers.h index bac962612f9..c9944b5c87f 100644 --- a/include/llvm/PassManagers.h +++ b/include/llvm/PassManagers.h @@ -309,7 +309,7 @@ public: void dumpPassInfo(Pass *P, enum PassDebuggingString S1, enum PassDebuggingString S2, const char *Msg); void dumpAnalysisSetInfo(const char *Msg, Pass *P, - const std::vector &Set) const; + const AnalysisUsage::VectorType &Set) const; virtual unsigned getNumContainedPasses() const { return (unsigned)PassVector.size(); diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index d04f90c127a..35cbe906b70 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -294,8 +294,9 @@ void PassRegistrationListener::enumeratePasses() { namespace { struct GetCFGOnlyPasses : public PassRegistrationListener { - std::vector &CFGOnlyList; - GetCFGOnlyPasses(std::vector &L) : CFGOnlyList(L) {} + typedef AnalysisUsage::VectorType VectorType; + VectorType &CFGOnlyList; + GetCFGOnlyPasses(VectorType &L) : CFGOnlyList(L) {} void passEnumerate(const PassInfo *P) { if (P->isCFGOnlyPass()) diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 4392bee5eb9..e48ea81ea03 100644 --- a/lib/VMCore/PassManager.cpp +++ b/lib/VMCore/PassManager.cpp @@ -441,8 +441,8 @@ void PMTopLevelManager::schedulePass(Pass *P) { AnalysisUsage AnUsage; P->getAnalysisUsage(AnUsage); - const std::vector &RequiredSet = AnUsage.getRequiredSet(); - for (std::vector::const_iterator I = RequiredSet.begin(), + const AnalysisUsage::VectorType &RequiredSet = AnUsage.getRequiredSet(); + for (AnalysisUsage::VectorType::const_iterator I = RequiredSet.begin(), E = RequiredSet.end(); I != E; ++I) { Pass *AnalysisPass = findAnalysisPass(*I); @@ -584,7 +584,7 @@ bool PMDataManager::preserveHigherLevelAnalysis(Pass *P) { if (AnUsage.getPreservesAll()) return true; - const std::vector &PreservedSet = AnUsage.getPreservedSet(); + const AnalysisUsage::VectorType &PreservedSet = AnUsage.getPreservedSet(); for (std::vector::iterator I = HigherLevelAnalysis.begin(), E = HigherLevelAnalysis.end(); I != E; ++I) { Pass *P1 = *I; @@ -606,10 +606,10 @@ void PMDataManager::verifyPreservedAnalysis(Pass *P) { #endif AnalysisUsage AnUsage; P->getAnalysisUsage(AnUsage); - const std::vector &PreservedSet = AnUsage.getPreservedSet(); + const AnalysisUsage::VectorType &PreservedSet = AnUsage.getPreservedSet(); // Verify preserved analysis - for (std::vector::const_iterator I = PreservedSet.begin(), + for (AnalysisUsage::VectorType::const_iterator I = PreservedSet.begin(), E = PreservedSet.end(); I != E; ++I) { AnalysisID AID = *I; if (Pass *AP = findAnalysisPass(AID, true)) @@ -664,7 +664,7 @@ void PMDataManager::removeNotPreservedAnalysis(Pass *P) { if (AnUsage.getPreservesAll()) return; - const std::vector &PreservedSet = AnUsage.getPreservedSet(); + const AnalysisUsage::VectorType &PreservedSet = AnUsage.getPreservedSet(); for (std::map::iterator I = AvailableAnalysis.begin(), E = AvailableAnalysis.end(); I != E; ) { std::map::iterator Info = I++; @@ -822,8 +822,8 @@ void PMDataManager::collectRequiredAnalysis(SmallVector&RP, Pass *P) { AnalysisUsage AnUsage; P->getAnalysisUsage(AnUsage); - const std::vector &RequiredSet = AnUsage.getRequiredSet(); - for (std::vector::const_iterator + const AnalysisUsage::VectorType &RequiredSet = AnUsage.getRequiredSet(); + for (AnalysisUsage::VectorType::const_iterator I = RequiredSet.begin(), E = RequiredSet.end(); I != E; ++I) { AnalysisID AID = *I; @@ -833,8 +833,8 @@ void PMDataManager::collectRequiredAnalysis(SmallVector&RP, RP_NotAvail.push_back(AID); } - const std::vector &IDs = AnUsage.getRequiredTransitiveSet(); - for (std::vector::const_iterator I = IDs.begin(), + const AnalysisUsage::VectorType &IDs = AnUsage.getRequiredTransitiveSet(); + for (AnalysisUsage::VectorType::const_iterator I = IDs.begin(), E = IDs.end(); I != E; ++I) { AnalysisID AID = *I; if (Pass *AnalysisPass = findAnalysisPass(*I, true)) @@ -853,7 +853,7 @@ void PMDataManager::initializeAnalysisImpl(Pass *P) { AnalysisUsage AnUsage; P->getAnalysisUsage(AnUsage); - for (std::vector::const_iterator + for (AnalysisUsage::VectorType::const_iterator I = AnUsage.getRequiredSet().begin(), E = AnUsage.getRequiredSet().end(); I != E; ++I) { Pass *Impl = findAnalysisPass(*I, true); @@ -955,7 +955,7 @@ void PMDataManager::dumpPassInfo(Pass *P, enum PassDebuggingString S1, } void PMDataManager::dumpAnalysisSetInfo(const char *Msg, Pass *P, - const std::vector &Set) + const AnalysisUsage::VectorType &Set) const { if (PassDebugging >= Details && !Set.empty()) { cerr << (void*)P << std::string(getDepth()*2+3, ' ') << Msg << " Analyses:";