summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2017-10-09 23:53:15 +0000
committerLang Hames <lhames@gmail.com>2017-10-09 23:53:15 +0000
commitdcb312bdb9616c19f1e58afc9d06b49f81f648e8 (patch)
treede7480f6ee4c774a8e93f1d0bad5a229ebd33b63 /llvm
parente0f1541f41625124926b951b88b70c5d9429c54b (diff)
downloadbcm5719-llvm-dcb312bdb9616c19f1e58afc9d06b49f81f648e8.tar.gz
bcm5719-llvm-dcb312bdb9616c19f1e58afc9d06b49f81f648e8.zip
[MC] Plumb unique_ptr<MCELFObjectTargetWriter> through createELFObjectWriter to
ELFObjectWriter's constructor. Fixes the same ownership issue for ELF that r315245 did for MachO: ELFObjectWriter takes ownership of its MCELFObjectTargetWriter, so we want to pass this through to the constructor via a unique_ptr, rather than a raw ptr. llvm-svn: 315254
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/MC/MCELFObjectWriter.h6
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp15
-rw-r--r--llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp6
-rw-r--r--llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp6
-rw-r--r--llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp4
-rw-r--r--llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp4
-rw-r--r--llvm/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp4
-rw-r--r--llvm/lib/Target/Lanai/MCTargetDesc/LanaiELFObjectWriter.cpp4
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp6
-rw-r--r--llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp4
-rw-r--r--llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp4
-rw-r--r--llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp4
-rw-r--r--llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp5
13 files changed, 36 insertions, 36 deletions
diff --git a/llvm/include/llvm/MC/MCELFObjectWriter.h b/llvm/include/llvm/MC/MCELFObjectWriter.h
index d32b56a4ba0..c0f21840cd1 100644
--- a/llvm/include/llvm/MC/MCELFObjectWriter.h
+++ b/llvm/include/llvm/MC/MCELFObjectWriter.h
@@ -137,9 +137,9 @@ public:
/// \param MOTW - The target specific ELF writer subclass.
/// \param OS - The stream to write to.
/// \returns The constructed object writer.
-MCObjectWriter *createELFObjectWriter(MCELFObjectTargetWriter *MOTW,
- raw_pwrite_stream &OS,
- bool IsLittleEndian);
+MCObjectWriter *
+createELFObjectWriter(std::unique_ptr<MCELFObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS, bool IsLittleEndian);
} // end namespace llvm
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index eef2757b93b..795c21f08b9 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -162,9 +162,10 @@ class ELFObjectWriter : public MCObjectWriter {
bool ZLibStyle, unsigned Alignment);
public:
- ELFObjectWriter(MCELFObjectTargetWriter *MOTW, raw_pwrite_stream &OS,
- bool IsLittleEndian)
- : MCObjectWriter(OS, IsLittleEndian), TargetObjectWriter(MOTW) {}
+ ELFObjectWriter(std::unique_ptr<MCELFObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS, bool IsLittleEndian)
+ : MCObjectWriter(OS, IsLittleEndian),
+ TargetObjectWriter(std::move(MOTW)) {}
~ELFObjectWriter() override = default;
@@ -1386,8 +1387,8 @@ bool ELFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
InSet, IsPCRel);
}
-MCObjectWriter *llvm::createELFObjectWriter(MCELFObjectTargetWriter *MOTW,
- raw_pwrite_stream &OS,
- bool IsLittleEndian) {
- return new ELFObjectWriter(MOTW, OS, IsLittleEndian);
+MCObjectWriter *
+llvm::createELFObjectWriter(std::unique_ptr<MCELFObjectTargetWriter> MOTW,
+ raw_pwrite_stream &OS, bool IsLittleEndian) {
+ return new ELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
index 89c3e5b4c76..b7b987e6266 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
@@ -432,7 +432,7 @@ MCObjectWriter *llvm::createAArch64ELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI,
bool IsLittleEndian,
bool IsILP32) {
- MCELFObjectTargetWriter *MOTW =
- new AArch64ELFObjectWriter(OSABI, IsLittleEndian, IsILP32);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ auto MOTW =
+ llvm::make_unique<AArch64ELFObjectWriter>(OSABI, IsLittleEndian, IsILP32);
+ return createELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp
index 9d9b5ee3ef4..a2fe02e936e 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUELFObjectWriter.cpp
@@ -85,7 +85,7 @@ MCObjectWriter *llvm::createAMDGPUELFObjectWriter(bool Is64Bit,
uint8_t OSABI,
bool HasRelocationAddend,
raw_pwrite_stream &OS) {
- MCELFObjectTargetWriter *MOTW =
- new AMDGPUELFObjectWriter(Is64Bit, OSABI, HasRelocationAddend);
- return createELFObjectWriter(MOTW, OS, true);
+ auto MOTW = llvm::make_unique<AMDGPUELFObjectWriter>(Is64Bit, OSABI,
+ HasRelocationAddend);
+ return createELFObjectWriter(std::move(MOTW), OS, true);
}
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
index dc893472096..6f825a3d0a6 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
@@ -238,6 +238,6 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target,
MCObjectWriter *llvm::createARMELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI,
bool IsLittleEndian) {
- MCELFObjectTargetWriter *MOTW = new ARMELFObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ return createELFObjectWriter(llvm::make_unique<ARMELFObjectWriter>(OSABI), OS,
+ IsLittleEndian);
}
diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp b/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp
index d5e1d7706ed..22ab156b940 100644
--- a/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp
+++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp
@@ -54,6 +54,6 @@ unsigned BPFELFObjectWriter::getRelocType(MCContext &Ctx, const MCValue &Target,
MCObjectWriter *llvm::createBPFELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI, bool IsLittleEndian) {
- MCELFObjectTargetWriter *MOTW = new BPFELFObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ return createELFObjectWriter(llvm::make_unique<BPFELFObjectWriter>(OSABI), OS,
+ IsLittleEndian);
}
diff --git a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp
index b975e313109..b0239a724db 100644
--- a/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp
+++ b/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp
@@ -300,6 +300,6 @@ unsigned HexagonELFObjectWriter::getRelocType(MCContext &Ctx,
MCObjectWriter *llvm::createHexagonELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI,
StringRef CPU) {
- MCELFObjectTargetWriter *MOTW = new HexagonELFObjectWriter(OSABI, CPU);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian*/ true);
+ auto MOTW = llvm::make_unique<HexagonELFObjectWriter>(OSABI, CPU);
+ return createELFObjectWriter(std::move(MOTW), OS, /*IsLittleEndian*/ true);
}
diff --git a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiELFObjectWriter.cpp b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiELFObjectWriter.cpp
index 64cd3342ac1..fec6a3919b6 100644
--- a/llvm/lib/Target/Lanai/MCTargetDesc/LanaiELFObjectWriter.cpp
+++ b/llvm/lib/Target/Lanai/MCTargetDesc/LanaiELFObjectWriter.cpp
@@ -88,6 +88,6 @@ bool LanaiELFObjectWriter::needsRelocateWithSymbol(const MCSymbol & /*SD*/,
MCObjectWriter *llvm::createLanaiELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new LanaiELFObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/false);
+ return createELFObjectWriter(llvm::make_unique<LanaiELFObjectWriter>(OSABI),
+ OS, /*IsLittleEndian=*/false);
}
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
index 4339eca93f1..7ea3505fcdb 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
@@ -660,7 +660,7 @@ MCObjectWriter *llvm::createMipsELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(TT.getOS());
bool IsN64 = TT.isArch64Bit() && !IsN32;
bool HasRelocationAddend = TT.isArch64Bit();
- auto *MOTW = new MipsELFObjectWriter(OSABI, HasRelocationAddend, IsN64,
- TT.isLittleEndian());
- return createELFObjectWriter(MOTW, OS, TT.isLittleEndian());
+ auto MOTW = llvm::make_unique<MipsELFObjectWriter>(
+ OSABI, HasRelocationAddend, IsN64, TT.isLittleEndian());
+ return createELFObjectWriter(std::move(MOTW), OS, TT.isLittleEndian());
}
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
index 1488bd5b0be..06d84628374 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
@@ -420,6 +420,6 @@ MCObjectWriter *llvm::createPPCELFObjectWriter(raw_pwrite_stream &OS,
bool Is64Bit,
bool IsLittleEndian,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new PPCELFObjectWriter(Is64Bit, OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ auto MOTW = llvm::make_unique<PPCELFObjectWriter>(Is64Bit, OSABI);
+ return createELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
index d35e45e0346..508d191aa1c 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
@@ -135,6 +135,6 @@ MCObjectWriter *llvm::createSparcELFObjectWriter(raw_pwrite_stream &OS,
bool Is64Bit,
bool IsLittleEndian,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new SparcELFObjectWriter(Is64Bit, OSABI);
- return createELFObjectWriter(MOTW, OS, IsLittleEndian);
+ auto MOTW = llvm::make_unique<SparcELFObjectWriter>(Is64Bit, OSABI);
+ return createELFObjectWriter(std::move(MOTW), OS, IsLittleEndian);
}
diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
index df0a8161e6e..166a3f0e1aa 100644
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp
@@ -162,6 +162,6 @@ unsigned SystemZObjectWriter::getRelocType(MCContext &Ctx,
MCObjectWriter *llvm::createSystemZObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI) {
- MCELFObjectTargetWriter *MOTW = new SystemZObjectWriter(OSABI);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/false);
+ return createELFObjectWriter(llvm::make_unique<SystemZObjectWriter>(OSABI),
+ OS, /*IsLittleEndian=*/false);
}
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
index 4da4eebec03..7e79941be34 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
@@ -300,7 +300,6 @@ unsigned X86ELFObjectWriter::getRelocType(MCContext &Ctx, const MCValue &Target,
MCObjectWriter *llvm::createX86ELFObjectWriter(raw_pwrite_stream &OS,
bool IsELF64, uint8_t OSABI,
uint16_t EMachine) {
- MCELFObjectTargetWriter *MOTW =
- new X86ELFObjectWriter(IsELF64, OSABI, EMachine);
- return createELFObjectWriter(MOTW, OS, /*IsLittleEndian=*/true);
+ auto MOTW = llvm::make_unique<X86ELFObjectWriter>(IsELF64, OSABI, EMachine);
+ return createELFObjectWriter(std::move(MOTW), OS, /*IsLittleEndian=*/true);
}
OpenPOWER on IntegriCloud