From 2d1f275c9987ca2df1c187afad4d5ff6fd55d1db Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Fri, 4 Jul 2014 13:52:01 +0000 Subject: [PATCH] Convert these functions to use ErrorOr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212341 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bitcode/Reader/BitcodeReader.cpp | 17 +++++++++-------- lib/Bitcode/Reader/BitcodeReader.h | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 641f6889133..c02b587e3fc 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -2116,12 +2116,13 @@ std::error_code BitcodeReader::ParseBitcodeInto(Module *M) { } } -std::error_code BitcodeReader::ParseModuleTriple(std::string &Triple) { +ErrorOr BitcodeReader::parseModuleTriple() { if (Stream.EnterSubBlock(bitc::MODULE_BLOCK_ID)) return Error(InvalidRecord); SmallVector Record; + std::string Triple; // Read all the records for this module. while (1) { BitstreamEntry Entry = Stream.advanceSkippingSubblocks(); @@ -2150,9 +2151,10 @@ std::error_code BitcodeReader::ParseModuleTriple(std::string &Triple) { } Record.clear(); } + return Triple; } -std::error_code BitcodeReader::ParseTriple(std::string &Triple) { +ErrorOr BitcodeReader::parseTriple() { if (std::error_code EC = InitStream()) return EC; @@ -2178,7 +2180,7 @@ std::error_code BitcodeReader::ParseTriple(std::string &Triple) { case BitstreamEntry::SubBlock: if (Entry.ID == bitc::MODULE_BLOCK_ID) - return ParseModuleTriple(Triple); + return parseModuleTriple(); // Ignore other sub-blocks. if (Stream.SkipBlock()) @@ -3470,11 +3472,10 @@ ErrorOr llvm::parseBitcodeFile(MemoryBuffer *Buffer, std::string llvm::getBitcodeTargetTriple(MemoryBuffer *Buffer, LLVMContext &Context) { BitcodeReader *R = new BitcodeReader(Buffer, Context); - - std::string Triple(""); - R->ParseTriple(Triple); - + ErrorOr Triple = R->parseTriple(); R->releaseBuffer(); delete R; - return Triple; + if (Triple.getError()) + return ""; + return Triple.get(); } diff --git a/lib/Bitcode/Reader/BitcodeReader.h b/lib/Bitcode/Reader/BitcodeReader.h index 0771bcb00d3..1d4869a2d5a 100644 --- a/lib/Bitcode/Reader/BitcodeReader.h +++ b/lib/Bitcode/Reader/BitcodeReader.h @@ -252,7 +252,7 @@ public: /// @brief Cheap mechanism to just extract module triple /// @returns true if an error occurred. - std::error_code ParseTriple(std::string &Triple); + ErrorOr parseTriple(); static uint64_t decodeSignRotatedValue(uint64_t V); @@ -354,7 +354,7 @@ private: std::error_code ResolveGlobalAndAliasInits(); std::error_code ParseMetadata(); std::error_code ParseMetadataAttachment(); - std::error_code ParseModuleTriple(std::string &Triple); + ErrorOr parseModuleTriple(); std::error_code ParseUseLists(); std::error_code InitStream(); std::error_code InitStreamFromBuffer(); -- 2.34.1