From: Rafael Espindola Date: Wed, 11 Oct 2017 18:07:18 +0000 (+0000) Subject: Convert the last uses of ErrorOr in include/llvm/Object. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f45980e68e5fe719118153933ce86adde049ce31;p=llvm Convert the last uses of ErrorOr in include/llvm/Object. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315483 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Object/IRObjectFile.h b/include/llvm/Object/IRObjectFile.h index 9a696bffd1f..6c271b1a1f4 100644 --- a/include/llvm/Object/IRObjectFile.h +++ b/include/llvm/Object/IRObjectFile.h @@ -52,12 +52,12 @@ public: /// \brief Finds and returns bitcode embedded in the given object file, or an /// error code if not found. - static ErrorOr findBitcodeInObject(const ObjectFile &Obj); + static Expected findBitcodeInObject(const ObjectFile &Obj); /// \brief Finds and returns bitcode in the given memory buffer (which may /// be either a bitcode file or a native object file with embedded bitcode), /// or an error code if not found. - static ErrorOr + static Expected findBitcodeInMemBuffer(MemoryBufferRef Object); static Expected> create(MemoryBufferRef Object, diff --git a/lib/LTO/LTOModule.cpp b/lib/LTO/LTOModule.cpp index 3cc8b7d0e77..6a0fbb664da 100644 --- a/lib/LTO/LTOModule.cpp +++ b/lib/LTO/LTOModule.cpp @@ -60,7 +60,7 @@ LTOModule::~LTOModule() {} /// isBitcodeFile - Returns 'true' if the file (or memory contents) is LLVM /// bitcode. bool LTOModule::isBitcodeFile(const void *Mem, size_t Length) { - ErrorOr BCData = IRObjectFile::findBitcodeInMemBuffer( + Expected BCData = IRObjectFile::findBitcodeInMemBuffer( MemoryBufferRef(StringRef((const char *)Mem, Length), "")); return bool(BCData); } @@ -71,7 +71,7 @@ bool LTOModule::isBitcodeFile(StringRef Path) { if (!BufferOrErr) return false; - ErrorOr BCData = IRObjectFile::findBitcodeInMemBuffer( + Expected BCData = IRObjectFile::findBitcodeInMemBuffer( BufferOrErr.get()->getMemBufferRef()); return bool(BCData); } @@ -87,7 +87,7 @@ bool LTOModule::isThinLTO() { bool LTOModule::isBitcodeForTarget(MemoryBuffer *Buffer, StringRef TriplePrefix) { - ErrorOr BCOrErr = + Expected BCOrErr = IRObjectFile::findBitcodeInMemBuffer(Buffer->getMemBufferRef()); if (!BCOrErr) return false; @@ -100,7 +100,7 @@ bool LTOModule::isBitcodeForTarget(MemoryBuffer *Buffer, } std::string LTOModule::getProducerString(MemoryBuffer *Buffer) { - ErrorOr BCOrErr = + Expected BCOrErr = IRObjectFile::findBitcodeInMemBuffer(Buffer->getMemBufferRef()); if (!BCOrErr) return ""; @@ -174,11 +174,11 @@ LTOModule::createInLocalContext(std::unique_ptr Context, static ErrorOr> parseBitcodeFileImpl(MemoryBufferRef Buffer, LLVMContext &Context, bool ShouldBeLazy) { - // Find the buffer. - ErrorOr MBOrErr = + Expected MBOrErr = IRObjectFile::findBitcodeInMemBuffer(Buffer); - if (std::error_code EC = MBOrErr.getError()) { + if (Error E = MBOrErr.takeError()) { + std::error_code EC = errorToErrorCode(std::move(E)); Context.emitError(EC.message()); return EC; } diff --git a/lib/Object/IRObjectFile.cpp b/lib/Object/IRObjectFile.cpp index e7807b03833..ed6d6b1cb4e 100644 --- a/lib/Object/IRObjectFile.cpp +++ b/lib/Object/IRObjectFile.cpp @@ -82,20 +82,22 @@ StringRef IRObjectFile::getTargetTriple() const { return Mods[0]->getTargetTriple(); } -ErrorOr IRObjectFile::findBitcodeInObject(const ObjectFile &Obj) { +Expected +IRObjectFile::findBitcodeInObject(const ObjectFile &Obj) { for (const SectionRef &Sec : Obj.sections()) { if (Sec.isBitcode()) { StringRef SecContents; if (std::error_code EC = Sec.getContents(SecContents)) - return EC; + return errorCodeToError(EC); return MemoryBufferRef(SecContents, Obj.getFileName()); } } - return object_error::bitcode_section_not_found; + return errorCodeToError(object_error::bitcode_section_not_found); } -ErrorOr IRObjectFile::findBitcodeInMemBuffer(MemoryBufferRef Object) { +Expected +IRObjectFile::findBitcodeInMemBuffer(MemoryBufferRef Object) { file_magic Type = identify_magic(Object.getBuffer()); switch (Type) { case file_magic::bitcode: @@ -106,19 +108,19 @@ ErrorOr IRObjectFile::findBitcodeInMemBuffer(MemoryBufferRef Ob Expected> ObjFile = ObjectFile::createObjectFile(Object, Type); if (!ObjFile) - return errorToErrorCode(ObjFile.takeError()); + return ObjFile.takeError(); return findBitcodeInObject(*ObjFile->get()); } default: - return object_error::invalid_file_type; + return errorCodeToError(object_error::invalid_file_type); } } Expected> IRObjectFile::create(MemoryBufferRef Object, LLVMContext &Context) { - ErrorOr BCOrErr = findBitcodeInMemBuffer(Object); + Expected BCOrErr = findBitcodeInMemBuffer(Object); if (!BCOrErr) - return errorCodeToError(BCOrErr.getError()); + return BCOrErr.takeError(); Expected> BMsOrErr = getBitcodeModuleList(*BCOrErr); @@ -142,10 +144,10 @@ IRObjectFile::create(MemoryBufferRef Object, LLVMContext &Context) { Expected object::readIRSymtab(MemoryBufferRef MBRef) { IRSymtabFile F; - ErrorOr BCOrErr = + Expected BCOrErr = IRObjectFile::findBitcodeInMemBuffer(MBRef); if (!BCOrErr) - return errorCodeToError(BCOrErr.getError()); + return BCOrErr.takeError(); Expected BFCOrErr = getBitcodeFileContents(*BCOrErr); if (!BFCOrErr) diff --git a/lib/Object/SymbolicFile.cpp b/lib/Object/SymbolicFile.cpp index 1042d29d235..2e7f2cc0d1d 100644 --- a/lib/Object/SymbolicFile.cpp +++ b/lib/Object/SymbolicFile.cpp @@ -80,10 +80,12 @@ SymbolicFile::createSymbolicFile(MemoryBufferRef Object, file_magic Type, if (!Obj || !Context) return std::move(Obj); - ErrorOr BCData = + Expected BCData = IRObjectFile::findBitcodeInObject(*Obj->get()); - if (!BCData) + if (!BCData) { + consumeError(BCData.takeError()); return std::move(Obj); + } return IRObjectFile::create( MemoryBufferRef(BCData->getBuffer(), Object.getBufferIdentifier()),