summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCELFStreamer.cpp
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2017-10-10 16:28:07 +0000
committerLang Hames <lhames@gmail.com>2017-10-10 16:28:07 +0000
commit60fbc7cc38cde63adac7b70391e46141270817ad (patch)
tree75a5fa4eda963e134c27c8b7f277402e74c86ad5 /llvm/lib/MC/MCELFStreamer.cpp
parent37af00e7d0febf397472c40c3b0df5e6ded7688c (diff)
downloadbcm5719-llvm-60fbc7cc38cde63adac7b70391e46141270817ad.tar.gz
bcm5719-llvm-60fbc7cc38cde63adac7b70391e46141270817ad.zip
[MC] Thread unique_ptr<MCObjectWriter> through the create.*ObjectWriter
functions. This makes the ownership of the resulting MCObjectWriter clear, and allows us to remove one instance of MCObjectStreamer's bizarre "holding ownership via someone else's reference" trick. llvm-svn: 315327
Diffstat (limited to 'llvm/lib/MC/MCELFStreamer.cpp')
-rw-r--r--llvm/lib/MC/MCELFStreamer.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp
index 50c1f6e79f8..76976cab466 100644
--- a/llvm/lib/MC/MCELFStreamer.cpp
+++ b/llvm/lib/MC/MCELFStreamer.cpp
@@ -62,12 +62,13 @@ void MCELFStreamer::mergeFragment(MCDataFragment *DF,
if (RequiredBundlePadding > 0) {
SmallString<256> Code;
raw_svector_ostream VecOS(Code);
- MCObjectWriter *OW = Assembler.getBackend().createObjectWriter(VecOS);
+ {
+ auto OW = Assembler.getBackend().createObjectWriter(VecOS);
- EF->setBundlePadding(static_cast<uint8_t>(RequiredBundlePadding));
+ EF->setBundlePadding(static_cast<uint8_t>(RequiredBundlePadding));
- Assembler.writeFragmentPadding(*EF, FSize, OW);
- delete OW;
+ Assembler.writeFragmentPadding(*EF, FSize, OW.get());
+ }
DF->getContents().append(Code.begin(), Code.end());
}
OpenPOWER on IntegriCloud