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/X86 | |
| 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/X86')
| -rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp | 11 |
2 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h b/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h index 757ae5d197e..c5859b600ad 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h +++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h @@ -93,7 +93,8 @@ MCTargetStreamer *createX86ObjectTargetStreamer(MCStreamer &OS, /// Takes ownership of \p AB and \p CE. MCStreamer *createX86WinCOFFStreamer(MCContext &C, std::unique_ptr<MCAsmBackend> &&AB, - raw_pwrite_stream &OS, MCCodeEmitter *CE, + raw_pwrite_stream &OS, + std::unique_ptr<MCCodeEmitter> &&CE, bool RelaxAll, bool IncrementalLinkerCompatible); diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp index 157c4c7b62b..5b1357ae4a7 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp @@ -10,6 +10,7 @@ #include "X86MCTargetDesc.h" #include "X86TargetStreamer.h" #include "llvm/MC/MCAsmBackend.h" +#include "llvm/MC/MCCodeEmitter.h" #include "llvm/MC/MCWin64EH.h" #include "llvm/MC/MCWinCOFFStreamer.h" @@ -20,8 +21,8 @@ class X86WinCOFFStreamer : public MCWinCOFFStreamer { Win64EH::UnwindEmitter EHStreamer; public: X86WinCOFFStreamer(MCContext &C, std::unique_ptr<MCAsmBackend> AB, - MCCodeEmitter *CE, raw_pwrite_stream &OS) - : MCWinCOFFStreamer(C, std::move(AB), *CE, OS) {} + std::unique_ptr<MCCodeEmitter> CE, raw_pwrite_stream &OS) + : MCWinCOFFStreamer(C, std::move(AB), std::move(CE), OS) {} void EmitWinEHHandlerData(SMLoc Loc) override; void EmitWindowsUnwindTables() override; @@ -60,9 +61,11 @@ void X86WinCOFFStreamer::FinishImpl() { MCStreamer *llvm::createX86WinCOFFStreamer(MCContext &C, std::unique_ptr<MCAsmBackend> &&AB, raw_pwrite_stream &OS, - MCCodeEmitter *CE, bool RelaxAll, + std::unique_ptr<MCCodeEmitter> &&CE, + bool RelaxAll, bool IncrementalLinkerCompatible) { - X86WinCOFFStreamer *S = new X86WinCOFFStreamer(C, std::move(AB), CE, OS); + X86WinCOFFStreamer *S = + new X86WinCOFFStreamer(C, std::move(AB), std::move(CE), OS); S->getAssembler().setRelaxAll(RelaxAll); S->getAssembler().setIncrementalLinkerCompatible(IncrementalLinkerCompatible); return S; |

