diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2017-10-11 18:07:18 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2017-10-11 18:07:18 +0000 |
commit | f45980e68e5fe719118153933ce86adde049ce31 (patch) | |
tree | 742104c90935a8d56887f89341be335deef80724 | |
parent | e7c6ff09d78be5d0733660936192cd5a01e2e55c (diff) |
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
-rw-r--r-- | include/llvm/Object/IRObjectFile.h | 4 | ||||
-rw-r--r-- | lib/LTO/LTOModule.cpp | 14 | ||||
-rw-r--r-- | lib/Object/IRObjectFile.cpp | 22 | ||||
-rw-r--r-- | lib/Object/SymbolicFile.cpp | 6 |
4 files changed, 25 insertions, 21 deletions
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<MemoryBufferRef> findBitcodeInObject(const ObjectFile &Obj); + static Expected<MemoryBufferRef> 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<MemoryBufferRef> + static Expected<MemoryBufferRef> findBitcodeInMemBuffer(MemoryBufferRef Object); static Expected<std::unique_ptr<IRObjectFile>> 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<MemoryBufferRef> BCData = IRObjectFile::findBitcodeInMemBuffer( + Expected<MemoryBufferRef> BCData = IRObjectFile::findBitcodeInMemBuffer( MemoryBufferRef(StringRef((const char *)Mem, Length), "<mem>")); return bool(BCData); } @@ -71,7 +71,7 @@ bool LTOModule::isBitcodeFile(StringRef Path) { if (!BufferOrErr) return false; - ErrorOr<MemoryBufferRef> BCData = IRObjectFile::findBitcodeInMemBuffer( + Expected<MemoryBufferRef> BCData = IRObjectFile::findBitcodeInMemBuffer( BufferOrErr.get()->getMemBufferRef()); return bool(BCData); } @@ -87,7 +87,7 @@ bool LTOModule::isThinLTO() { bool LTOModule::isBitcodeForTarget(MemoryBuffer *Buffer, StringRef TriplePrefix) { - ErrorOr<MemoryBufferRef> BCOrErr = + Expected<MemoryBufferRef> 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<MemoryBufferRef> BCOrErr = + Expected<MemoryBufferRef> BCOrErr = IRObjectFile::findBitcodeInMemBuffer(Buffer->getMemBufferRef()); if (!BCOrErr) return ""; @@ -174,11 +174,11 @@ LTOModule::createInLocalContext(std::unique_ptr<LLVMContext> Context, static ErrorOr<std::unique_ptr<Module>> parseBitcodeFileImpl(MemoryBufferRef Buffer, LLVMContext &Context, bool ShouldBeLazy) { - // Find the buffer. - ErrorOr<MemoryBufferRef> MBOrErr = + Expected<MemoryBufferRef> 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<MemoryBufferRef> IRObjectFile::findBitcodeInObject(const ObjectFile &Obj) { +Expected<MemoryBufferRef> +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<MemoryBufferRef> IRObjectFile::findBitcodeInMemBuffer(MemoryBufferRef Object) { +Expected<MemoryBufferRef> +IRObjectFile::findBitcodeInMemBuffer(MemoryBufferRef Object) { file_magic Type = identify_magic(Object.getBuffer()); switch (Type) { case file_magic::bitcode: @@ -106,19 +108,19 @@ ErrorOr<MemoryBufferRef> IRObjectFile::findBitcodeInMemBuffer(MemoryBufferRef Ob Expected<std::unique_ptr<ObjectFile>> 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<std::unique_ptr<IRObjectFile>> IRObjectFile::create(MemoryBufferRef Object, LLVMContext &Context) { - ErrorOr<MemoryBufferRef> BCOrErr = findBitcodeInMemBuffer(Object); + Expected<MemoryBufferRef> BCOrErr = findBitcodeInMemBuffer(Object); if (!BCOrErr) - return errorCodeToError(BCOrErr.getError()); + return BCOrErr.takeError(); Expected<std::vector<BitcodeModule>> BMsOrErr = getBitcodeModuleList(*BCOrErr); @@ -142,10 +144,10 @@ IRObjectFile::create(MemoryBufferRef Object, LLVMContext &Context) { Expected<IRSymtabFile> object::readIRSymtab(MemoryBufferRef MBRef) { IRSymtabFile F; - ErrorOr<MemoryBufferRef> BCOrErr = + Expected<MemoryBufferRef> BCOrErr = IRObjectFile::findBitcodeInMemBuffer(MBRef); if (!BCOrErr) - return errorCodeToError(BCOrErr.getError()); + return BCOrErr.takeError(); Expected<BitcodeFileContents> 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<MemoryBufferRef> BCData = + Expected<MemoryBufferRef> BCData = IRObjectFile::findBitcodeInObject(*Obj->get()); - if (!BCData) + if (!BCData) { + consumeError(BCData.takeError()); return std::move(Obj); + } return IRObjectFile::create( MemoryBufferRef(BCData->getBuffer(), Object.getBufferIdentifier()), |