From e2c1d77fb41fd580d11c56cb1082eb505cfa1f18 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 26 Aug 2014 22:00:09 +0000 Subject: Pass a std::unique_ptr& to getLazyBitcodeModule. By taking a reference we can do the ownership transfer in one place instead of expecting every caller to do it. llvm-svn: 216492 --- llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp') diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 8dc0aa3..1b88e5f 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -3519,11 +3519,11 @@ const std::error_category &llvm::BitcodeErrorCategory() { /// /// \param[in] WillMaterializeAll Set to \c true if the caller promises to /// materialize everything -- in particular, if this isn't truly lazy. -static ErrorOr getLazyBitcodeModuleImpl(MemoryBuffer *Buffer, - LLVMContext &Context, - bool WillMaterializeAll) { +static ErrorOr +getLazyBitcodeModuleImpl(std::unique_ptr &Buffer, + LLVMContext &Context, bool WillMaterializeAll) { Module *M = new Module(Buffer->getBufferIdentifier(), Context); - BitcodeReader *R = new BitcodeReader(Buffer, Context); + BitcodeReader *R = new BitcodeReader(Buffer.get(), Context); M->setMaterializer(R); auto cleanupOnError = [&](std::error_code EC) { @@ -3540,11 +3540,13 @@ static ErrorOr getLazyBitcodeModuleImpl(MemoryBuffer *Buffer, if (std::error_code EC = R->materializeForwardReferencedFunctions()) return cleanupOnError(EC); + Buffer.release(); // The BitcodeReader owns it now. return M; } -ErrorOr llvm::getLazyBitcodeModule(MemoryBuffer *Buffer, - LLVMContext &Context) { +ErrorOr +llvm::getLazyBitcodeModule(std::unique_ptr &Buffer, + LLVMContext &Context) { return getLazyBitcodeModuleImpl(Buffer, Context, false); } @@ -3567,11 +3569,9 @@ Module *llvm::getStreamedBitcodeModule(const std::string &name, ErrorOr llvm::parseBitcodeFile(MemoryBufferRef Buffer, LLVMContext &Context) { std::unique_ptr Buf = MemoryBuffer::getMemBuffer(Buffer, false); - ErrorOr ModuleOrErr = - getLazyBitcodeModuleImpl(Buf.get(), Context, true); + ErrorOr ModuleOrErr = getLazyBitcodeModuleImpl(Buf, Context, true); if (!ModuleOrErr) return ModuleOrErr; - Buf.release(); // The BitcodeReader owns it now. Module *M = ModuleOrErr.get(); // Read in the entire module, and destroy the BitcodeReader. if (std::error_code EC = M->materializeAllPermanently()) { -- cgit v1.1