diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/IR/PassRegistry.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Scalar/CodeGenPrepare.cpp | 18 |
2 files changed, 15 insertions, 5 deletions
diff --git a/lib/IR/PassRegistry.cpp b/lib/IR/PassRegistry.cpp index d3b2f1fce1..74dc0f1daa 100644 --- a/lib/IR/PassRegistry.cpp +++ b/lib/IR/PassRegistry.cpp @@ -179,6 +179,8 @@ void PassRegistry::registerAnalysisGroup(const void *InterfaceID, assert(ImplementationInfo->getNormalCtor() && "Cannot specify pass as default if it does not have a default ctor"); InterfaceInfo->setNormalCtor(ImplementationInfo->getNormalCtor()); + InterfaceInfo->setTargetMachineCtor( + ImplementationInfo->getTargetMachineCtor()); } } diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp index c5fbc340b1..38f587b2cc 100644 --- a/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -129,11 +129,19 @@ namespace { } char CodeGenPrepare::ID = 0; -INITIALIZE_PASS_BEGIN(CodeGenPrepare, "codegenprepare", - "Optimize for code generation", false, false) -INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfo) -INITIALIZE_PASS_END(CodeGenPrepare, "codegenprepare", - "Optimize for code generation", false, false) +static void *initializeCodeGenPreparePassOnce(PassRegistry &Registry) { + initializeTargetLibraryInfoPass(Registry); + PassInfo *PI = new PassInfo( + "Optimize for code generation", "codegenprepare", &CodeGenPrepare::ID, + PassInfo::NormalCtor_t(callDefaultCtor<CodeGenPrepare>), false, false, + PassInfo::TargetMachineCtor_t(callTargetMachineCtor<CodeGenPrepare>)); + Registry.registerPass(*PI, true); + return PI; +} + +void llvm::initializeCodeGenPreparePass(PassRegistry &Registry) { + CALL_ONCE_INITIALIZATION(initializeCodeGenPreparePassOnce) +} FunctionPass *llvm::createCodeGenPreparePass(const TargetMachine *TM) { return new CodeGenPrepare(TM); |