summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCObjectStreamer.cpp
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2017-10-11 23:34:47 +0000
committerLang Hames <lhames@gmail.com>2017-10-11 23:34:47 +0000
commit2241ffa43cee14361757e9dbdee01161030d1656 (patch)
tree5c45b1e1a054f4ed236085ece5cc97200b5dc230 /llvm/lib/MC/MCObjectStreamer.cpp
parent337462b36512cc001891a98fb98fa5693651722f (diff)
downloadbcm5719-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.cpp11
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())
OpenPOWER on IntegriCloud