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/MC/MCObjectStreamer.cpp | |
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/MC/MCObjectStreamer.cpp')
-rw-r--r-- | llvm/lib/MC/MCObjectStreamer.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp index ba45d24fd08..2fd969de296 100644 --- a/llvm/lib/MC/MCObjectStreamer.cpp +++ b/llvm/lib/MC/MCObjectStreamer.cpp @@ -28,15 +28,14 @@ using namespace llvm; MCObjectStreamer::MCObjectStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> TAB, raw_pwrite_stream &OS, - MCCodeEmitter *Emitter_) + std::unique_ptr<MCCodeEmitter> Emitter) : MCStreamer(Context), ObjectWriter(TAB->createObjectWriter(OS)), - TAB(std::move(TAB)), Assembler(llvm::make_unique<MCAssembler>( - Context, *this->TAB, *Emitter_, *ObjectWriter)), + TAB(std::move(TAB)), Emitter(std::move(Emitter)), + Assembler(llvm::make_unique<MCAssembler>(Context, *this->TAB, + *this->Emitter, *ObjectWriter)), EmitEHFrame(true), EmitDebugFrame(false) {} -MCObjectStreamer::~MCObjectStreamer() { - delete &Assembler->getEmitter(); -} +MCObjectStreamer::~MCObjectStreamer() {} void MCObjectStreamer::flushPendingLabels(MCFragment *F, uint64_t FOffset) { if (PendingLabels.empty()) |