From 4010882fb4546354a7000ee778d3a5eec2f42ff5 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Tue, 10 Oct 2017 01:15:10 +0000 Subject: [PATCH] [MC] Plumb unique_ptr through createWasmObjectWriter to WasmObjectWriter's constructor. Fixes the same ownership issue for COFF that r315245 did for MachO: WasmObjectWriter takes ownership of its MCWasmObjectTargetWriter, so we want to pass this through to the constructor via a unique_ptr, rather than a raw ptr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315260 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/MC/MCWasmObjectWriter.h | 5 +++-- lib/MC/WasmObjectWriter.cpp | 13 ++++++++----- .../MCTargetDesc/WebAssemblyWasmObjectWriter.cpp | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/include/llvm/MC/MCWasmObjectWriter.h b/include/llvm/MC/MCWasmObjectWriter.h index bebc0a82581..5ddb18b8e38 100644 --- a/include/llvm/MC/MCWasmObjectWriter.h +++ b/include/llvm/MC/MCWasmObjectWriter.h @@ -44,8 +44,9 @@ public: /// \param MOTW - The target specific Wasm writer subclass. /// \param OS - The stream to write to. /// \returns The constructed object writer. -MCObjectWriter *createWasmObjectWriter(MCWasmObjectTargetWriter *MOTW, - raw_pwrite_stream &OS); +MCObjectWriter * +createWasmObjectWriter(std::unique_ptr MOTW, + raw_pwrite_stream &OS); } // End llvm namespace diff --git a/lib/MC/WasmObjectWriter.cpp b/lib/MC/WasmObjectWriter.cpp index af5c1a759c7..02d8bfbe1de 100644 --- a/lib/MC/WasmObjectWriter.cpp +++ b/lib/MC/WasmObjectWriter.cpp @@ -227,8 +227,10 @@ class WasmObjectWriter : public MCObjectWriter { void endSection(SectionBookkeeping &Section); public: - WasmObjectWriter(MCWasmObjectTargetWriter *MOTW, raw_pwrite_stream &OS) - : MCObjectWriter(OS, /*IsLittleEndian=*/true), TargetObjectWriter(MOTW) {} + WasmObjectWriter(std::unique_ptr MOTW, + raw_pwrite_stream &OS) + : MCObjectWriter(OS, /*IsLittleEndian=*/true), + TargetObjectWriter(std::move(MOTW)) {} private: ~WasmObjectWriter() override; @@ -1315,7 +1317,8 @@ void WasmObjectWriter::writeObject(MCAssembler &Asm, // TODO: Translate debug sections to the output. } -MCObjectWriter *llvm::createWasmObjectWriter(MCWasmObjectTargetWriter *MOTW, - raw_pwrite_stream &OS) { - return new WasmObjectWriter(MOTW, OS); +MCObjectWriter * +llvm::createWasmObjectWriter(std::unique_ptr MOTW, + raw_pwrite_stream &OS) { + return new WasmObjectWriter(std::move(MOTW), OS); } diff --git a/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp b/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp index 995984b0361..af973193246 100644 --- a/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp +++ b/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp @@ -95,6 +95,6 @@ WebAssemblyWasmObjectWriter::getRelocType(const MCValue &Target, MCObjectWriter *llvm::createWebAssemblyWasmObjectWriter(raw_pwrite_stream &OS, bool Is64Bit) { - MCWasmObjectTargetWriter *MOTW = new WebAssemblyWasmObjectWriter(Is64Bit); - return createWasmObjectWriter(MOTW, OS); + auto MOTW = llvm::make_unique(Is64Bit); + return createWasmObjectWriter(std::move(MOTW), OS); } -- 2.40.0