Fix a leak on the r600 backend.

This should bring the valgrind bot back to life.

llvm-svn: 182561
This commit is contained in:
Rafael Espindola 2013-05-23 03:31:47 +00:00
parent bd6847fbea
commit 39aca620db
2 changed files with 12 additions and 8 deletions

View File

@ -64,11 +64,11 @@ AMDGPUTargetMachine::AMDGPUTargetMachine(const Target &T, StringRef TT,
InstrItins(&Subtarget.getInstrItineraryData()) { InstrItins(&Subtarget.getInstrItineraryData()) {
// TLInfo uses InstrInfo so it must be initialized after. // TLInfo uses InstrInfo so it must be initialized after.
if (Subtarget.device()->getGeneration() <= AMDGPUDeviceInfo::HD6XXX) { if (Subtarget.device()->getGeneration() <= AMDGPUDeviceInfo::HD6XXX) {
InstrInfo = new R600InstrInfo(*this); InstrInfo.reset(new R600InstrInfo(*this));
TLInfo = new R600TargetLowering(*this); TLInfo.reset(new R600TargetLowering(*this));
} else { } else {
InstrInfo = new SIInstrInfo(*this); InstrInfo.reset(new SIInstrInfo(*this));
TLInfo = new SITargetLowering(*this); TLInfo.reset(new SITargetLowering(*this));
} }
initAsmInfo(); initAsmInfo();
} }

View File

@ -33,8 +33,8 @@ class AMDGPUTargetMachine : public LLVMTargetMachine {
const DataLayout Layout; const DataLayout Layout;
AMDGPUFrameLowering FrameLowering; AMDGPUFrameLowering FrameLowering;
AMDGPUIntrinsicInfo IntrinsicInfo; AMDGPUIntrinsicInfo IntrinsicInfo;
const AMDGPUInstrInfo *InstrInfo; OwningPtr<AMDGPUInstrInfo> InstrInfo;
AMDGPUTargetLowering *TLInfo; OwningPtr<AMDGPUTargetLowering> TLInfo;
const InstrItineraryData *InstrItins; const InstrItineraryData *InstrItins;
public: public:
@ -48,12 +48,16 @@ public:
virtual const AMDGPUIntrinsicInfo *getIntrinsicInfo() const { virtual const AMDGPUIntrinsicInfo *getIntrinsicInfo() const {
return &IntrinsicInfo; 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 AMDGPUSubtarget *getSubtargetImpl() const { return &Subtarget; }
virtual const AMDGPURegisterInfo *getRegisterInfo() const { virtual const AMDGPURegisterInfo *getRegisterInfo() const {
return &InstrInfo->getRegisterInfo(); return &InstrInfo->getRegisterInfo();
} }
virtual AMDGPUTargetLowering *getTargetLowering() const { return TLInfo; } virtual AMDGPUTargetLowering *getTargetLowering() const {
return TLInfo.get();
}
virtual const InstrItineraryData *getInstrItineraryData() const { virtual const InstrItineraryData *getInstrItineraryData() const {
return InstrItins; return InstrItins;
} }