From e8e3eb839729ae894a2410e1f7f5e92139e077e4 Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Mon, 16 Feb 2015 21:28:58 +0000 Subject: [PATCH] InstrProf: Use ErrorOr for IndexedInstrProfReader::create (NFC) The other InstrProfReader::create factories were updated to return ErrorOr in r221120, and it's odd for these APIs not to match. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229433 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ProfileData/InstrProfReader.h | 4 ++-- lib/ProfileData/CoverageMapping.cpp | 5 +++-- lib/ProfileData/InstrProfReader.cpp | 11 ++++++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/include/llvm/ProfileData/InstrProfReader.h b/include/llvm/ProfileData/InstrProfReader.h index 495966425c5..5dd1d4f9dd7 100644 --- a/include/llvm/ProfileData/InstrProfReader.h +++ b/include/llvm/ProfileData/InstrProfReader.h @@ -292,8 +292,8 @@ public: uint64_t getMaximumFunctionCount() { return MaxFunctionCount; } /// Factory method to create an indexed reader. - static std::error_code - create(std::string Path, std::unique_ptr &Result); + static ErrorOr> + create(std::string Path); }; } // end namespace llvm diff --git a/lib/ProfileData/CoverageMapping.cpp b/lib/ProfileData/CoverageMapping.cpp index b3d9884d2a1..df6fae7b483 100644 --- a/lib/ProfileData/CoverageMapping.cpp +++ b/lib/ProfileData/CoverageMapping.cpp @@ -223,9 +223,10 @@ CoverageMapping::load(StringRef ObjectFilename, StringRef ProfileFilename) { ObjectFileCoverageMappingReader CoverageReader(CounterMappingBuff.get()); if (auto EC = CoverageReader.readHeader()) return EC; - std::unique_ptr ProfileReader; - if (auto EC = IndexedInstrProfReader::create(ProfileFilename, ProfileReader)) + auto ProfileReaderOrErr = IndexedInstrProfReader::create(ProfileFilename); + if (auto EC = ProfileReaderOrErr.getError()) return EC; + auto ProfileReader = std::move(ProfileReaderOrErr.get()); return load(CoverageReader, *ProfileReader); } diff --git a/lib/ProfileData/InstrProfReader.cpp b/lib/ProfileData/InstrProfReader.cpp index 31ed1309b46..d13f27c3113 100644 --- a/lib/ProfileData/InstrProfReader.cpp +++ b/lib/ProfileData/InstrProfReader.cpp @@ -64,21 +64,26 @@ InstrProfReader::create(std::string Path) { return std::move(Result); } -std::error_code IndexedInstrProfReader::create( - std::string Path, std::unique_ptr &Result) { +ErrorOr> +IndexedInstrProfReader::create(std::string Path) { // Set up the buffer to read. auto BufferOrError = setupMemoryBuffer(Path); if (std::error_code EC = BufferOrError.getError()) return EC; auto Buffer = std::move(BufferOrError.get()); + std::unique_ptr Result; + // Create the reader. if (!IndexedInstrProfReader::hasFormat(*Buffer)) return instrprof_error::bad_magic; Result.reset(new IndexedInstrProfReader(std::move(Buffer))); // Initialize the reader and return the result. - return initializeReader(*Result); + if (std::error_code EC = initializeReader(*Result)) + return EC; + + return std::move(Result); } void InstrProfIterator::Increment() { -- 2.34.1