[llvm] r315260 - [MC] Plumb unique_ptr<MCWasmObjectTargetWriter> through createWasmObjectWriter
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 9 18:15:10 PDT 2017
Author: lhames
Date: Mon Oct 9 18:15:10 2017
New Revision: 315260
URL: http://llvm.org/viewvc/llvm-project?rev=315260&view=rev
Log:
[MC] Plumb unique_ptr<MCWasmObjectTargetWriter> 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.
Modified:
llvm/trunk/include/llvm/MC/MCWasmObjectWriter.h
llvm/trunk/lib/MC/WasmObjectWriter.cpp
llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp
Modified: llvm/trunk/include/llvm/MC/MCWasmObjectWriter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCWasmObjectWriter.h?rev=315260&r1=315259&r2=315260&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCWasmObjectWriter.h (original)
+++ llvm/trunk/include/llvm/MC/MCWasmObjectWriter.h Mon Oct 9 18:15:10 2017
@@ -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<MCWasmObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS);
} // End llvm namespace
Modified: llvm/trunk/lib/MC/WasmObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WasmObjectWriter.cpp?rev=315260&r1=315259&r2=315260&view=diff
==============================================================================
--- llvm/trunk/lib/MC/WasmObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/WasmObjectWriter.cpp Mon Oct 9 18:15:10 2017
@@ -227,8 +227,10 @@ class WasmObjectWriter : public MCObject
void endSection(SectionBookkeeping &Section);
public:
- WasmObjectWriter(MCWasmObjectTargetWriter *MOTW, raw_pwrite_stream &OS)
- : MCObjectWriter(OS, /*IsLittleEndian=*/true), TargetObjectWriter(MOTW) {}
+ WasmObjectWriter(std::unique_ptr<MCWasmObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS)
+ : MCObjectWriter(OS, /*IsLittleEndian=*/true),
+ TargetObjectWriter(std::move(MOTW)) {}
private:
~WasmObjectWriter() override;
@@ -1315,7 +1317,8 @@ void WasmObjectWriter::writeObject(MCAss
// 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<MCWasmObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS) {
+ return new WasmObjectWriter(std::move(MOTW), OS);
}
Modified: llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp?rev=315260&r1=315259&r2=315260&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp Mon Oct 9 18:15:10 2017
@@ -95,6 +95,6 @@ WebAssemblyWasmObjectWriter::getRelocTyp
MCObjectWriter *llvm::createWebAssemblyWasmObjectWriter(raw_pwrite_stream &OS,
bool Is64Bit) {
- MCWasmObjectTargetWriter *MOTW = new WebAssemblyWasmObjectWriter(Is64Bit);
- return createWasmObjectWriter(MOTW, OS);
+ auto MOTW = llvm::make_unique<WebAssemblyWasmObjectWriter>(Is64Bit);
+ return createWasmObjectWriter(std::move(MOTW), OS);
}
More information about the llvm-commits
mailing list