Fix a leak on the r600 backend.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 23 May 2013 03:31:47 +0000 (03:31 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 23 May 2013 03:31:47 +0000 (03:31 +0000)
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
lib/Target/R600/AMDGPUTargetMachine.h

index 71be02a86fe789609ffc2aa73d93bddecd188056..88dc5832905f259009bdf0901dca0595f32bf32f 100644 (file)
@@ -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();
 }
index 0db66398305c30ec73616cde0fc6a9c451e280b2..bb26ed94b8e9f786ebd7aa9813a2e5ee6c812ff7 100644 (file)
@@ -33,8 +33,8 @@ class AMDGPUTargetMachine : public LLVMTargetMachine {
   const DataLayout Layout;
   AMDGPUFrameLowering FrameLowering;
   AMDGPUIntrinsicInfo IntrinsicInfo;
-  const AMDGPUInstrInfo *InstrInfo;
-  AMDGPUTargetLowering *TLInfo;
+  OwningPtr<AMDGPUInstrInfo> InstrInfo;
+  OwningPtr<AMDGPUTargetLowering> 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;
   }