diff options
Diffstat (limited to 'lib/VMCore/Pass.cpp')
-rw-r--r-- | lib/VMCore/Pass.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index 9afc540..994a7ff 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -25,11 +25,9 @@ using namespace llvm; // Pass Implementation // -Pass::Pass(PassKind K, char &pid) : Resolver(0), PassID(&pid), Kind(K) { } - // Force out-of-line virtual method. -Pass::~Pass() { - delete Resolver; +Pass::~Pass() { + delete Resolver; } // Force out-of-line virtual method. @@ -48,7 +46,7 @@ bool Pass::mustPreserveAnalysisID(char &AID) const { return Resolver->getAnalysisIfAvailable(&AID, true) != 0; } -// dumpPassStructure - Implement the -debug-passes=Structure option +// dumpPassStructure - Implement the -debug-pass=Structure option void Pass::dumpPassStructure(unsigned Offset) { dbgs().indent(Offset*2) << getPassName() << "\n"; } @@ -71,7 +69,7 @@ void Pass::preparePassManager(PMStack &) { PassManagerType Pass::getPotentialPassManagerType() const { // Default implementation. - return PMT_Unknown; + return PMT_Unknown; } void Pass::getAnalysisUsage(AnalysisUsage &) const { @@ -155,9 +153,8 @@ PassManagerType FunctionPass::getPotentialPassManagerType() const { Pass *BasicBlockPass::createPrinterPass(raw_ostream &O, const std::string &Banner) const { - + llvm_unreachable("BasicBlockPass printing unsupported."); - return 0; } bool BasicBlockPass::doInitialization(Module &) { @@ -181,7 +178,7 @@ bool BasicBlockPass::doFinalization(Module &) { } PassManagerType BasicBlockPass::getPotentialPassManagerType() const { - return PMT_BasicBlockPassManager; + return PMT_BasicBlockPassManager; } const PassInfo *Pass::lookupPassInfo(const void *TI) { @@ -192,6 +189,13 @@ const PassInfo *Pass::lookupPassInfo(StringRef Arg) { return PassRegistry::getPassRegistry()->getPassInfo(Arg); } +Pass *Pass::createPass(AnalysisID ID) { + const PassInfo *PI = PassRegistry::getPassRegistry()->getPassInfo(ID); + if (!PI) + return NULL; + return PI->createPass(); +} + Pass *PassInfo::createPass() const { assert((!isAnalysisGroup() || NormalCtor) && "No default implementation found for analysis group!"); @@ -246,7 +250,7 @@ namespace { typedef AnalysisUsage::VectorType VectorType; VectorType &CFGOnlyList; GetCFGOnlyPasses(VectorType &L) : CFGOnlyList(L) {} - + void passEnumerate(const PassInfo *P) { if (P->isCFGOnlyPass()) CFGOnlyList.push_back(P->getTypeInfo()); |