]> granicus.if.org Git - llvm/commitdiff
[MC] Plumb unique_ptr<MCMachObjectTargetWriter> through createMachObjectWriter
authorLang Hames <lhames@gmail.com>
Mon, 9 Oct 2017 22:38:13 +0000 (22:38 +0000)
committerLang Hames <lhames@gmail.com>
Mon, 9 Oct 2017 22:38:13 +0000 (22:38 +0000)
to MCObjectWriter's constructor.

MCObjectWriter takes ownership of its MCMachObjectTargetWriter argument -- this
patch plumbs that ownership relationship through the constructor (which
previously took raw MCMachObjectTargetWriter*) and the createMachObjectWriter
function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315245 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCMachObjectWriter.h
lib/MC/MachObjectWriter.cpp
lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp
lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp

index 42dc90da3049a73cb36228dd980cd9b0d2ba868e..6e7b9bcc03acadb11dfa4f63e5b198ada3b6e8c3 100644 (file)
@@ -117,9 +117,10 @@ class MachObjectWriter : public MCObjectWriter {
   MachSymbolData *findSymbolData(const MCSymbol &Sym);
 
 public:
-  MachObjectWriter(MCMachObjectTargetWriter *MOTW, raw_pwrite_stream &OS,
-                   bool IsLittleEndian)
-      : MCObjectWriter(OS, IsLittleEndian), TargetObjectWriter(MOTW) {}
+  MachObjectWriter(std::unique_ptr<MCMachObjectTargetWriter> MOTW,
+                   raw_pwrite_stream &OS, bool IsLittleEndian)
+      : MCObjectWriter(OS, IsLittleEndian),
+        TargetObjectWriter(std::move(MOTW)) {}
 
   const MCSymbol &findAliasedSymbol(const MCSymbol &Sym) const;
 
@@ -269,9 +270,9 @@ public:
 /// \param MOTW - The target specific Mach-O writer subclass.
 /// \param OS - The stream to write to.
 /// \returns The constructed object writer.
-MCObjectWriter *createMachObjectWriter(MCMachObjectTargetWriter *MOTW,
-                                       raw_pwrite_stream &OS,
-                                       bool IsLittleEndian);
+MCObjectWriter *
+createMachObjectWriter(std::unique_ptr<MCMachObjectTargetWriter> MOTW,
+                       raw_pwrite_stream &OS, bool IsLittleEndian);
 
 } // end namespace llvm
 
index 62bf0a58fdfa927d9b7628e9639845e08a24b28f..c2196a77e18f80d7a8bc76fb6169a1443392c565 100644 (file)
@@ -994,8 +994,8 @@ void MachObjectWriter::writeObject(MCAssembler &Asm,
   }
 }
 
-MCObjectWriter *llvm::createMachObjectWriter(MCMachObjectTargetWriter *MOTW,
-                                             raw_pwrite_stream &OS,
-                                             bool IsLittleEndian) {
-  return new MachObjectWriter(MOTW, OS, IsLittleEndian);
+MCObjectWriter *
+llvm::createMachObjectWriter(std::unique_ptr<MCMachObjectTargetWriter> MOTW,
+                             raw_pwrite_stream &OS, bool IsLittleEndian) {
+  return new MachObjectWriter(std::move(MOTW), OS, IsLittleEndian);
 }
index 19b2576f68951ec93f54393a18e230a5ab3c445b..a06b038d090b92605aa3553b5325511b5f554e69 100644 (file)
@@ -434,6 +434,6 @@ MCObjectWriter *llvm::createAArch64MachObjectWriter(raw_pwrite_stream &OS,
                                                     uint32_t CPUType,
                                                     uint32_t CPUSubtype) {
   return createMachObjectWriter(
-      new AArch64MachObjectWriter(CPUType, CPUSubtype), OS,
+      llvm::make_unique<AArch64MachObjectWriter>(CPUType, CPUSubtype), OS,
       /*IsLittleEndian=*/true);
 }
index f371699e9fc791b785d325fbb4e11468bd9067f6..d375b640c94348aad508be2f57c13c388a036258 100644 (file)
@@ -487,8 +487,7 @@ void ARMMachObjectWriter::recordRelocation(MachObjectWriter *Writer,
 MCObjectWriter *llvm::createARMMachObjectWriter(raw_pwrite_stream &OS,
                                                 bool Is64Bit, uint32_t CPUType,
                                                 uint32_t CPUSubtype) {
-  return createMachObjectWriter(new ARMMachObjectWriter(Is64Bit,
-                                                        CPUType,
-                                                        CPUSubtype),
-                                OS, /*IsLittleEndian=*/true);
+  return createMachObjectWriter(
+      llvm::make_unique<ARMMachObjectWriter>(Is64Bit, CPUType, CPUSubtype), OS,
+      /*IsLittleEndian=*/true);
 }
index d5506277ca880b1fd3b9d692808621f063ec87f3..baa6707e1923144ac346440a0eebe1dce405a543 100644 (file)
@@ -378,6 +378,6 @@ MCObjectWriter *llvm::createPPCMachObjectWriter(raw_pwrite_stream &OS,
                                                 bool Is64Bit, uint32_t CPUType,
                                                 uint32_t CPUSubtype) {
   return createMachObjectWriter(
-      new PPCMachObjectWriter(Is64Bit, CPUType, CPUSubtype), OS,
+      llvm::make_unique<PPCMachObjectWriter>(Is64Bit, CPUType, CPUSubtype), OS,
       /*IsLittleEndian=*/false);
 }
index 8f2017e990c51551c28d1b8f071259841bbed230..3b8d90ea36c1ff0465442d97c3b7b3bea6e29d03 100644 (file)
@@ -600,8 +600,7 @@ void X86MachObjectWriter::RecordX86Relocation(MachObjectWriter *Writer,
 MCObjectWriter *llvm::createX86MachObjectWriter(raw_pwrite_stream &OS,
                                                 bool Is64Bit, uint32_t CPUType,
                                                 uint32_t CPUSubtype) {
-  return createMachObjectWriter(new X86MachObjectWriter(Is64Bit,
-                                                        CPUType,
-                                                        CPUSubtype),
-                                OS, /*IsLittleEndian=*/true);
+  return createMachObjectWriter(
+      llvm::make_unique<X86MachObjectWriter>(Is64Bit, CPUType, CPUSubtype), OS,
+      /*IsLittleEndian=*/true);
 }