From: Andrew Trick Date: Mon, 6 Feb 2012 22:51:15 +0000 (+0000) Subject: Add TargetPassConfig to the PassManager for use inside passes X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=6939fde29cdd04cec9f440a9351c1c4340850e20;p=oota-llvm.git Add TargetPassConfig to the PassManager for use inside passes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149926 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp index b2768d61234..f07a85f39c2 100644 --- a/lib/CodeGen/LLVMTargetMachine.cpp +++ b/lib/CodeGen/LLVMTargetMachine.cpp @@ -116,6 +116,8 @@ static MCContext *addPassesToGenerateCode(LLVMTargetMachine *TM, // Set PassConfig options provided by TargetMachine. PassConfig->setDisableVerify(DisableVerify); + PM.add(PassConfig); + PassConfig->addIRPasses(); addPassesToHandleExceptions(TM, PM); @@ -145,8 +147,6 @@ static MCContext *addPassesToGenerateCode(LLVMTargetMachine *TM, PassConfig->addMachinePasses(); - delete PassConfig; - return Context; } diff --git a/lib/Target/PTX/PTXTargetMachine.cpp b/lib/Target/PTX/PTXTargetMachine.cpp index 5a14e8accdd..4ffd01b75a6 100644 --- a/lib/Target/PTX/PTXTargetMachine.cpp +++ b/lib/Target/PTX/PTXTargetMachine.cpp @@ -105,7 +105,7 @@ PTX64TargetMachine::PTX64TargetMachine(const Target &T, StringRef TT, : PTXTargetMachine(T, TT, CPU, FS, Options, RM, CM, OL, true) { } -namespace { +namespace llvm { /// PTX Code Generator Pass Configuration Options. class PTXPassConfig : public TargetPassConfig { public: @@ -147,11 +147,13 @@ bool PTXTargetMachine::addPassesToEmitFile(PassManagerBase &PM, MCContext *Context = 0; // FIXME: soon this will be converted to use the exposed TargetPassConfig API. - OwningPtr PassConfig( - static_cast(createPassConfig(PM))); + PTXPassConfig *PassConfig = + static_cast(createPassConfig(PM)); PassConfig->setDisableVerify(DisableVerify); + PM.add(PassConfig); + if (PassConfig->addCodeGenPasses(Context)) return true; assert(Context != 0 && "Failed to get MCContext");