From: David Blaikie Date: Tue, 2 Sep 2014 18:21:06 +0000 (+0000) Subject: unique_ptrify LTOCodeGenerator::NativeObjectFile X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=fc5b23200479dfa9a088fb3be583487bb9e7adec;p=oota-llvm.git unique_ptrify LTOCodeGenerator::NativeObjectFile git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216927 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/LTO/LTOCodeGenerator.h b/include/llvm/LTO/LTOCodeGenerator.h index 67b8903feb7..5bd28950d6c 100644 --- a/include/llvm/LTO/LTOCodeGenerator.h +++ b/include/llvm/LTO/LTOCodeGenerator.h @@ -142,7 +142,7 @@ private: lto_codegen_model CodeModel; StringSet MustPreserveSymbols; StringSet AsmUndefinedRefs; - MemoryBuffer *NativeObjectFile; + std::unique_ptr NativeObjectFile; std::vector CodegenOptions; std::string MCpu; std::string MAttr; diff --git a/lib/LTO/LTOCodeGenerator.cpp b/lib/LTO/LTOCodeGenerator.cpp index 887fddefc57..491975e3db6 100644 --- a/lib/LTO/LTOCodeGenerator.cpp +++ b/lib/LTO/LTOCodeGenerator.cpp @@ -67,15 +67,13 @@ LTOCodeGenerator::LTOCodeGenerator() : Context(getGlobalContext()), IRLinker(new Module("ld-temp.o", Context)), TargetMach(nullptr), EmitDwarfDebugInfo(false), ScopeRestrictionsDone(false), CodeModel(LTO_CODEGEN_PIC_MODEL_DEFAULT), - NativeObjectFile(nullptr), DiagHandler(nullptr), DiagContext(nullptr) { + DiagHandler(nullptr), DiagContext(nullptr) { initializeLTOPasses(); } LTOCodeGenerator::~LTOCodeGenerator() { delete TargetMach; - delete NativeObjectFile; TargetMach = nullptr; - NativeObjectFile = nullptr; IRLinker.deleteModule(); @@ -234,9 +232,6 @@ const void* LTOCodeGenerator::compile(size_t* length, errMsg)) return nullptr; - // remove old buffer if compile() called twice - delete NativeObjectFile; - // read .o file into memory buffer ErrorOr> BufferOrErr = MemoryBuffer::getFile(name, -1, false); @@ -245,7 +240,7 @@ const void* LTOCodeGenerator::compile(size_t* length, sys::fs::remove(NativeObjectPath); return nullptr; } - NativeObjectFile = BufferOrErr.get().release(); + NativeObjectFile = std::move(*BufferOrErr); // remove temp files sys::fs::remove(NativeObjectPath);