aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2017-09-08 18:44:47 +0000
committerVedant Kumar <vsk@apple.com>2017-09-08 18:44:47 +0000
commitbae8397006fcb479bc9bcfe84e826bacbfbe7891 (patch)
tree0c0ce2fffaaec799f50bf914d6f74ac9652b37af /llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
parent933b37f99f4f6f2ca3ab0d268caafc33c50bee84 (diff)
downloadllvm-bae8397006fcb479bc9bcfe84e826bacbfbe7891.zip
llvm-bae8397006fcb479bc9bcfe84e826bacbfbe7891.tar.gz
llvm-bae8397006fcb479bc9bcfe84e826bacbfbe7891.tar.bz2
[Coverage] Report errors when reading malformed source regions
Each source region has a start and end location. Report an error when the end location does not precede the begin location. The old lineExecutionCounts.covmapping test actually had a buggy source region in it. This commit introduces a regenerated copy of the coverage and moves the old copy to malformedRegions.covmapping, for a test. Differential Revision: https://reviews.llvm.org/D37387 llvm-svn: 312814
Diffstat (limited to 'llvm/lib/ProfileData/Coverage/CoverageMapping.cpp')
-rw-r--r--llvm/lib/ProfileData/Coverage/CoverageMapping.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
index 346ac76..d2878d3 100644
--- a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
+++ b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
@@ -250,10 +250,15 @@ Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(
IndexedInstrProfReader &ProfileReader) {
auto Coverage = std::unique_ptr<CoverageMapping>(new CoverageMapping());
- for (const auto &CoverageReader : CoverageReaders)
- for (const auto &Record : *CoverageReader)
+ for (const auto &CoverageReader : CoverageReaders) {
+ for (auto RecordOrErr : *CoverageReader) {
+ if (Error E = RecordOrErr.takeError())
+ return std::move(E);
+ const auto &Record = *RecordOrErr;
if (Error E = Coverage->loadFunctionRecord(Record, ProfileReader))
return std::move(E);
+ }
+ }
return std::move(Coverage);
}