From 39aca620db4e846f5a87e2a1e9f29b64352a06a0 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 23 May 2013 03:31:47 +0000 Subject: [PATCH] Fix a leak on the r600 backend. This should bring the valgrind bot back to life. llvm-svn: 182561 --- llvm/lib/Target/R600/AMDGPUTargetMachine.cpp | 8 ++++---- llvm/lib/Target/R600/AMDGPUTargetMachine.h | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp b/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp index 71be02a86fe7..88dc5832905f 100644 --- a/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/R600/AMDGPUTargetMachine.cpp @@ -64,11 +64,11 @@ AMDGPUTargetMachine::AMDGPUTargetMachine(const Target &T, StringRef TT, InstrItins(&Subtarget.getInstrItineraryData()) { // TLInfo uses InstrInfo so it must be initialized after. if (Subtarget.device()->getGeneration() <= AMDGPUDeviceInfo::HD6XXX) { - InstrInfo = new R600InstrInfo(*this); - TLInfo = new R600TargetLowering(*this); + InstrInfo.reset(new R600InstrInfo(*this)); + TLInfo.reset(new R600TargetLowering(*this)); } else { - InstrInfo = new SIInstrInfo(*this); - TLInfo = new SITargetLowering(*this); + InstrInfo.reset(new SIInstrInfo(*this)); + TLInfo.reset(new SITargetLowering(*this)); } initAsmInfo(); } diff --git a/llvm/lib/Target/R600/AMDGPUTargetMachine.h b/llvm/lib/Target/R600/AMDGPUTargetMachine.h index 0db66398305c..bb26ed94b8e9 100644 --- a/llvm/lib/Target/R600/AMDGPUTargetMachine.h +++ b/llvm/lib/Target/R600/AMDGPUTargetMachine.h @@ -33,8 +33,8 @@ class AMDGPUTargetMachine : public LLVMTargetMachine { const DataLayout Layout; AMDGPUFrameLowering FrameLowering; AMDGPUIntrinsicInfo IntrinsicInfo; - const AMDGPUInstrInfo *InstrInfo; - AMDGPUTargetLowering *TLInfo; + OwningPtr InstrInfo; + OwningPtr TLInfo; const InstrItineraryData *InstrItins; public: @@ -48,12 +48,16 @@ public: virtual const AMDGPUIntrinsicInfo *getIntrinsicInfo() const { return &IntrinsicInfo; } - virtual const AMDGPUInstrInfo *getInstrInfo() const { return InstrInfo; } + virtual const AMDGPUInstrInfo *getInstrInfo() const { + return InstrInfo.get(); + } virtual const AMDGPUSubtarget *getSubtargetImpl() const { return &Subtarget; } virtual const AMDGPURegisterInfo *getRegisterInfo() const { return &InstrInfo->getRegisterInfo(); } - virtual AMDGPUTargetLowering *getTargetLowering() const { return TLInfo; } + virtual AMDGPUTargetLowering *getTargetLowering() const { + return TLInfo.get(); + } virtual const InstrItineraryData *getInstrItineraryData() const { return InstrItins; }