diff options
| author | Lang Hames <lhames@gmail.com> | 2017-10-11 23:34:47 +0000 |
|---|---|---|
| committer | Lang Hames <lhames@gmail.com> | 2017-10-11 23:34:47 +0000 |
| commit | 2241ffa43cee14361757e9dbdee01161030d1656 (patch) | |
| tree | 5c45b1e1a054f4ed236085ece5cc97200b5dc230 /llvm/lib/Target/AMDGPU/MCTargetDesc | |
| parent | 337462b36512cc001891a98fb98fa5693651722f (diff) | |
| download | bcm5719-llvm-2241ffa43cee14361757e9dbdee01161030d1656.tar.gz bcm5719-llvm-2241ffa43cee14361757e9dbdee01161030d1656.zip | |
[MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr.
MCObjectStreamer owns its MCCodeEmitter -- this fixes the types to reflect that,
and allows us to remove the last instance of MCObjectStreamer's weird "holding
ownership via someone else's reference" trick.
llvm-svn: 315531
Diffstat (limited to 'llvm/lib/Target/AMDGPU/MCTargetDesc')
3 files changed, 15 insertions, 9 deletions
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.cpp index 875cdffea56..1497edc7a05 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.cpp @@ -11,14 +11,15 @@ #include "Utils/AMDGPUBaseInfo.h" #include "llvm/BinaryFormat/ELF.h" #include "llvm/MC/MCAsmBackend.h" +#include "llvm/MC/MCCodeEmitter.h" using namespace llvm; AMDGPUELFStreamer::AMDGPUELFStreamer(const Triple &T, MCContext &Context, std::unique_ptr<MCAsmBackend> MAB, raw_pwrite_stream &OS, - MCCodeEmitter *Emitter) - : MCELFStreamer(Context, std::move(MAB), OS, Emitter) { + std::unique_ptr<MCCodeEmitter> Emitter) + : MCELFStreamer(Context, std::move(MAB), OS, std::move(Emitter)) { unsigned Arch = ELF::EF_AMDGPU_ARCH_NONE; switch (T.getArch()) { case Triple::r600: @@ -40,6 +41,8 @@ AMDGPUELFStreamer::AMDGPUELFStreamer(const Triple &T, MCContext &Context, MCELFStreamer *llvm::createAMDGPUELFStreamer( const Triple &T, MCContext &Context, std::unique_ptr<MCAsmBackend> MAB, - raw_pwrite_stream &OS, MCCodeEmitter *Emitter, bool RelaxAll) { - return new AMDGPUELFStreamer(T, Context, std::move(MAB), OS, Emitter); + raw_pwrite_stream &OS, std::unique_ptr<MCCodeEmitter> Emitter, + bool RelaxAll) { + return new AMDGPUELFStreamer(T, Context, std::move(MAB), OS, + std::move(Emitter)); } diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.h b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.h index 2de1786d348..0cc0a4c5cd5 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.h +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFStreamer.h @@ -27,13 +27,14 @@ class AMDGPUELFStreamer : public MCELFStreamer { public: AMDGPUELFStreamer(const Triple &T, MCContext &Context, std::unique_ptr<MCAsmBackend> MAB, raw_pwrite_stream &OS, - MCCodeEmitter *Emitter); + std::unique_ptr<MCCodeEmitter> Emitter); }; MCELFStreamer *createAMDGPUELFStreamer(const Triple &T, MCContext &Context, std::unique_ptr<MCAsmBackend> MAB, raw_pwrite_stream &OS, - MCCodeEmitter *Emitter, bool RelaxAll); + std::unique_ptr<MCCodeEmitter> Emitter, + bool RelaxAll); } // namespace llvm. #endif diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.cpp index 578a3c25646..2b321c04fb3 100644 --- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.cpp +++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.cpp @@ -19,6 +19,7 @@ #include "InstPrinter/AMDGPUInstPrinter.h" #include "SIDefines.h" #include "llvm/MC/MCAsmBackend.h" +#include "llvm/MC/MCCodeEmitter.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCInstrInfo.h" #include "llvm/MC/MCRegisterInfo.h" @@ -81,9 +82,10 @@ static MCTargetStreamer * createAMDGPUObjectTargetStreamer( static MCStreamer *createMCStreamer(const Triple &T, MCContext &Context, std::unique_ptr<MCAsmBackend> &&MAB, raw_pwrite_stream &OS, - MCCodeEmitter *Emitter, bool RelaxAll) { - return createAMDGPUELFStreamer(T, Context, std::move(MAB), OS, Emitter, - RelaxAll); + std::unique_ptr<MCCodeEmitter> &&Emitter, + bool RelaxAll) { + return createAMDGPUELFStreamer(T, Context, std::move(MAB), OS, + std::move(Emitter), RelaxAll); } extern "C" void LLVMInitializeAMDGPUTargetMC() { |

