diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/Passes.cpp | 8 | ||||
-rw-r--r-- | lib/VMCore/Pass.cpp | 7 |
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/CodeGen/Passes.cpp b/lib/CodeGen/Passes.cpp index eb56734983..2877cf165b 100644 --- a/lib/CodeGen/Passes.cpp +++ b/lib/CodeGen/Passes.cpp @@ -103,8 +103,12 @@ TargetPassConfig::TargetPassConfig() llvm_unreachable("TargetPassConfig should not be constructed on-the-fly"); } -void TargetPassConfig::addCommonPass(char &ID) { - // FIXME: about to be implemented. +void TargetPassConfig::addPass(char &ID) { + // FIXME: check user overrides + Pass *P = Pass::createPass(ID); + if (!P) + llvm_unreachable("Pass ID not registered"); + PM.add(P); } void TargetPassConfig::printNoVerify(const char *Banner) const { diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index 05d2efa850..07ac3c35c1 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -189,6 +189,13 @@ const PassInfo *Pass::lookupPassInfo(StringRef Arg) { return PassRegistry::getPassRegistry()->getPassInfo(Arg); } +Pass *Pass::createPass(char &TI) { + const PassInfo *PI = PassRegistry::getPassRegistry()->getPassInfo(&TI); + if (!PI) + return NULL; + return PI->createPass(); +} + Pass *PassInfo::createPass() const { assert((!isAnalysisGroup() || NormalCtor) && "No default implementation found for analysis group!"); |