diff options
author | Justin Bogner <mail@justinbogner.com> | 2014-09-20 17:19:52 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2014-09-20 17:19:52 +0000 |
commit | 19a93ba81457afc4cd0e095b79d913e66c47cab9 (patch) | |
tree | e60a99257d9a3dbfe0229d5fe89dda935ff75ee5 | |
parent | 953e2407edb956eb846a79fc0dce08d032ea0d66 (diff) | |
download | bcm5719-llvm-19a93ba81457afc4cd0e095b79d913e66c47cab9.tar.gz bcm5719-llvm-19a93ba81457afc4cd0e095b79d913e66c47cab9.zip |
llvm-cov: Allow creating CoverageMappings from filenames
llvm-svn: 218185
-rw-r--r-- | llvm/include/llvm/ProfileData/CoverageMapping.h | 6 | ||||
-rw-r--r-- | llvm/lib/ProfileData/CoverageMapping.cpp | 14 | ||||
-rw-r--r-- | llvm/tools/llvm-cov/CodeCoverage.cpp | 19 |
3 files changed, 20 insertions, 19 deletions
diff --git a/llvm/include/llvm/ProfileData/CoverageMapping.h b/llvm/include/llvm/ProfileData/CoverageMapping.h index 2dba5f4abd5..a7c124adf33 100644 --- a/llvm/include/llvm/ProfileData/CoverageMapping.h +++ b/llvm/include/llvm/ProfileData/CoverageMapping.h @@ -318,11 +318,15 @@ class CoverageMapping { CoverageMapping() : MismatchedFunctionCount(0) {} public: - /// Load the coverage mapping using the given readers. + /// \brief Load the coverage mapping using the given readers. static ErrorOr<std::unique_ptr<CoverageMapping>> load(ObjectFileCoverageMappingReader &CoverageReader, IndexedInstrProfReader &ProfileReader); + /// \brief Load the coverage mapping from the given files. + static ErrorOr<std::unique_ptr<CoverageMapping>> + load(StringRef ObjectFilename, StringRef ProfileFilename); + /// \brief The number of functions that couldn't have their profiles mapped. /// /// This is a count of functions whose profile is out of date or otherwise diff --git a/llvm/lib/ProfileData/CoverageMapping.cpp b/llvm/lib/ProfileData/CoverageMapping.cpp index 2e205f3fba5..540e6433322 100644 --- a/llvm/lib/ProfileData/CoverageMapping.cpp +++ b/llvm/lib/ProfileData/CoverageMapping.cpp @@ -183,6 +183,20 @@ CoverageMapping::load(ObjectFileCoverageMappingReader &CoverageReader, return std::move(Coverage); } +ErrorOr<std::unique_ptr<CoverageMapping>> +CoverageMapping::load(StringRef ObjectFilename, StringRef ProfileFilename) { + auto CounterMappingBuff = MemoryBuffer::getFileOrSTDIN(ObjectFilename); + if (auto EC = CounterMappingBuff.getError()) + return EC; + ObjectFileCoverageMappingReader CoverageReader(CounterMappingBuff.get()); + if (auto EC = CoverageReader.readHeader()) + return EC; + std::unique_ptr<IndexedInstrProfReader> ProfileReader; + if (auto EC = IndexedInstrProfReader::create(ProfileFilename, ProfileReader)) + return EC; + return load(CoverageReader, *ProfileReader); +} + namespace { /// \brief Distributes functions into instantiation sets. /// diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index 5fc5a849cec..9e2f154c233 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -196,24 +196,7 @@ CodeCoverageTool::createSourceFileView(StringRef SourceFile, } std::unique_ptr<CoverageMapping> CodeCoverageTool::load() { - auto CounterMappingBuff = MemoryBuffer::getFileOrSTDIN(ObjectFilename); - if (auto EC = CounterMappingBuff.getError()) { - error(EC.message(), ObjectFilename); - return nullptr; - } - ObjectFileCoverageMappingReader MappingReader(CounterMappingBuff.get()); - if (auto EC = MappingReader.readHeader()) { - error(EC.message(), ObjectFilename); - return nullptr; - } - - std::unique_ptr<IndexedInstrProfReader> PGOReader; - if (auto EC = IndexedInstrProfReader::create(PGOFilename, PGOReader)) { - error(EC.message(), PGOFilename); - return nullptr; - } - - auto CoverageOrErr = CoverageMapping::load(MappingReader, *PGOReader); + auto CoverageOrErr = CoverageMapping::load(ObjectFilename, PGOFilename); if (std::error_code EC = CoverageOrErr.getError()) { colored_ostream(errs(), raw_ostream::RED) << "error: Failed to load coverage: " << EC.message(); |