From 5110102f9f7e7ddcd74d3bce1e5de3f898ba5e7f 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182561 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/R600/AMDGPUTargetMachine.cpp | 8 ++++---- lib/Target/R600/AMDGPUTargetMachine.h | 12 ++++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/Target/R600/AMDGPUTargetMachine.cpp b/lib/Target/R600/AMDGPUTargetMachine.cpp index 71be02a86fe..88dc5832905 100644 --- a/lib/Target/R600/AMDGPUTargetMachine.cpp +++ b/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/lib/Target/R600/AMDGPUTargetMachine.h b/lib/Target/R600/AMDGPUTargetMachine.h index 0db66398305..bb26ed94b8e 100644 --- a/lib/Target/R600/AMDGPUTargetMachine.h +++ b/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; }