OSDN Git Service

[MC] Use a unique_ptr<MCAssembler> for MCObjectStreamer's Assembler member.
authorLang Hames <lhames@gmail.com>
Mon, 9 Oct 2017 18:11:04 +0000 (18:11 +0000)
committerLang Hames <lhames@gmail.com>
Mon, 9 Oct 2017 18:11:04 +0000 (18:11 +0000)
Removes manual new/delete.

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

include/llvm/MC/MCObjectStreamer.h
lib/MC/MCObjectStreamer.cpp

index 284af06..9b7274a 100644 (file)
@@ -34,7 +34,7 @@ class raw_pwrite_stream;
 /// to that file format or custom semantics expected by the object writer
 /// implementation.
 class MCObjectStreamer : public MCStreamer {
-  MCAssembler *Assembler;
+  std::unique_ptr<MCAssembler> Assembler;
   MCSection::iterator CurInsertionPoint;
   bool EmitEHFrame;
   bool EmitDebugFrame;
index e9e3133..0beaf6b 100644 (file)
@@ -29,15 +29,14 @@ MCObjectStreamer::MCObjectStreamer(MCContext &Context, MCAsmBackend &TAB,
                                    raw_pwrite_stream &OS,
                                    MCCodeEmitter *Emitter_)
     : MCStreamer(Context),
-      Assembler(new MCAssembler(Context, TAB, *Emitter_,
-                                *TAB.createObjectWriter(OS))),
+      Assembler(llvm::make_unique<MCAssembler>(Context, TAB, *Emitter_,
+                                               *TAB.createObjectWriter(OS))),
       EmitEHFrame(true), EmitDebugFrame(false) {}
 
 MCObjectStreamer::~MCObjectStreamer() {
   delete &Assembler->getBackend();
   delete &Assembler->getEmitter();
   delete &Assembler->getWriter();
-  delete Assembler;
 }
 
 void MCObjectStreamer::flushPendingLabels(MCFragment *F, uint64_t FOffset) {