summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ProfileData/CoverageMapping.cpp
diff options
context:
space:
mode:
authorJustin Bogner <mail@justinbogner.com>2015-02-26 20:06:28 +0000
committerJustin Bogner <mail@justinbogner.com>2015-02-26 20:06:28 +0000
commit43e51634bb699c7aa8b97a78955115a15cbe291d (patch)
tree7da9d214cb98edcd62b951a6926f87cae0418b79 /llvm/lib/ProfileData/CoverageMapping.cpp
parente84891a459c6dfbcce93d2184f904ead886fd99a (diff)
downloadbcm5719-llvm-43e51634bb699c7aa8b97a78955115a15cbe291d.tar.gz
bcm5719-llvm-43e51634bb699c7aa8b97a78955115a15cbe291d.zip
InstrProf: Simplify the construction of BinaryCoverageReader
Creating BinaryCoverageReader is a strange and complicated dance where the constructor sets error codes that member functions will later read, and the object is in an invalid state if readHeader isn't immediately called after construction. Instead, make the constructor private and add a static create method to do the construction properly. This also has the benefit of removing readHeader completely and simplifying the interface of the object. llvm-svn: 230676
Diffstat (limited to 'llvm/lib/ProfileData/CoverageMapping.cpp')
-rw-r--r--llvm/lib/ProfileData/CoverageMapping.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/ProfileData/CoverageMapping.cpp b/llvm/lib/ProfileData/CoverageMapping.cpp
index 915aae3e594..31213d7fb2d 100644
--- a/llvm/lib/ProfileData/CoverageMapping.cpp
+++ b/llvm/lib/ProfileData/CoverageMapping.cpp
@@ -219,16 +219,18 @@ CoverageMapping::load(CoverageMappingReader &CoverageReader,
ErrorOr<std::unique_ptr<CoverageMapping>>
CoverageMapping::load(StringRef ObjectFilename, StringRef ProfileFilename) {
auto CounterMappingBuff = MemoryBuffer::getFileOrSTDIN(ObjectFilename);
- if (auto EC = CounterMappingBuff.getError())
+ if (std::error_code EC = CounterMappingBuff.getError())
return EC;
- BinaryCoverageReader CoverageReader(CounterMappingBuff.get());
- if (auto EC = CoverageReader.readHeader())
+ auto CoverageReaderOrErr =
+ BinaryCoverageReader::create(CounterMappingBuff.get());
+ if (std::error_code EC = CoverageReaderOrErr.getError())
return EC;
+ auto CoverageReader = std::move(CoverageReaderOrErr.get());
auto ProfileReaderOrErr = IndexedInstrProfReader::create(ProfileFilename);
if (auto EC = ProfileReaderOrErr.getError())
return EC;
auto ProfileReader = std::move(ProfileReaderOrErr.get());
- return load(CoverageReader, *ProfileReader);
+ return load(*CoverageReader, *ProfileReader);
}
namespace {
OpenPOWER on IntegriCloud