Skip to content

Commit 519117d

Browse files
committed
[llvm-cov] Keep the detailed error message in CoverageMappingIterator
Currently errors returned from CoverageMappingIterator will have their message part discarded. This commit copies that message when constructing the new CoverageMapError object, and let it displayed at the end caller (llvm-cov). Related: llvm#65264
1 parent 7dd790d commit 519117d

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

llvm/include/llvm/ProfileData/Coverage/CoverageMappingReader.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class CoverageMappingIterator {
4545
CoverageMappingReader *Reader;
4646
CoverageMappingRecord Record;
4747
coveragemap_error ReadErr;
48+
std::string ReadErrMsg;
4849

4950
void increment();
5051

@@ -80,15 +81,15 @@ class CoverageMappingIterator {
8081
}
8182
Expected<CoverageMappingRecord &> operator*() {
8283
if (ReadErr != coveragemap_error::success) {
83-
auto E = make_error<CoverageMapError>(ReadErr);
84+
auto E = make_error<CoverageMapError>(ReadErr, ReadErrMsg);
8485
ReadErr = coveragemap_error::success;
8586
return std::move(E);
8687
}
8788
return Record;
8889
}
8990
Expected<CoverageMappingRecord *> operator->() {
9091
if (ReadErr != coveragemap_error::success) {
91-
auto E = make_error<CoverageMapError>(ReadErr);
92+
auto E = make_error<CoverageMapError>(ReadErr, ReadErrMsg);
9293
ReadErr = coveragemap_error::success;
9394
return std::move(E);
9495
}

llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,10 @@ void CoverageMappingIterator::increment() {
5757
handleAllErrors(std::move(E), [&](const CoverageMapError &CME) {
5858
if (CME.get() == coveragemap_error::eof)
5959
*this = CoverageMappingIterator();
60-
else
60+
else {
6161
ReadErr = CME.get();
62+
ReadErrMsg = CME.getMessage();
63+
}
6264
});
6365
}
6466

llvm/test/tools/llvm-cov/warnings.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
// FAKE-FUNC-STDERR: Could not read coverage for '{{.*}}'.
1414

1515
// RUN: not llvm-cov report %S/Inputs/malformedRegions.covmapping -instr-profile %S/Inputs/elf_binary_comdat.profdata 2>&1 | FileCheck %s -check-prefix=MALFORMED-REGION
16-
// MALFORMED-REGION: failed to load coverage: '{{.*}}malformedRegions.covmapping': malformed coverage data
16+
// MALFORMED-REGION: failed to load coverage: '{{.*}}malformedRegions.covmapping': malformed coverage data: counter mapping region locations are incorrect

0 commit comments

Comments
 (0)