aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
diff options
context:
space:
mode:
authorZequan Wu <zequanwu@google.com>2022-07-21 10:18:16 -0700
committerZequan Wu <zequanwu@google.com>2022-07-21 11:26:51 -0700
commit4979b16db1b743d3505d1bf58bf0bf7225f2acc0 (patch)
tree5c1f400a8ca38bbec97737bcc9cc3a6bad71de73 /llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
parentd870a575631d2cedab2ff237af8edd17916edc64 (diff)
downloadllvm-4979b16db1b743d3505d1bf58bf0bf7225f2acc0.zip
llvm-4979b16db1b743d3505d1bf58bf0bf7225f2acc0.tar.gz
llvm-4979b16db1b743d3505d1bf58bf0bf7225f2acc0.tar.bz2
[llvm-cov] Improve error message by printing the object file name that produces error
If error occurs on constructing coverage info for one of the object files, it prints the name of the object file, so that users know which one is the cause of error. Differential Revision: https://reviews.llvm.org/D130196
Diffstat (limited to 'llvm/lib/ProfileData/Coverage/CoverageMapping.cpp')
-rw-r--r--llvm/lib/ProfileData/Coverage/CoverageMapping.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
index f4f13ba..8c1eadb 100644
--- a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
+++ b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
@@ -349,7 +349,7 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
StringRef CompilationDir) {
auto ProfileReaderOrErr = IndexedInstrProfReader::create(ProfileFilename);
if (Error E = ProfileReaderOrErr.takeError())
- return std::move(E);
+ return createFileError(ProfileFilename, std::move(E));
auto ProfileReader = std::move(ProfileReaderOrErr.get());
auto Coverage = std::unique_ptr<CoverageMapping>(new CoverageMapping());
bool DataFound = false;
@@ -358,7 +358,7 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
auto CovMappingBufOrErr = MemoryBuffer::getFileOrSTDIN(
File.value(), /*IsText=*/false, /*RequiresNullTerminator=*/false);
if (std::error_code EC = CovMappingBufOrErr.getError())
- return errorCodeToError(EC);
+ return createFileError(File.value(), errorCodeToError(EC));
StringRef Arch = Arches.empty() ? StringRef() : Arches[File.index()];
MemoryBufferRef CovMappingBufRef =
CovMappingBufOrErr.get()->getMemBufferRef();
@@ -368,7 +368,7 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
if (Error E = CoverageReadersOrErr.takeError()) {
E = handleMaybeNoDataFoundError(std::move(E));
if (E)
- return std::move(E);
+ return createFileError(File.value(), std::move(E));
// E == success (originally a no_data_found error).
continue;
}
@@ -378,12 +378,14 @@ CoverageMapping::load(ArrayRef<StringRef> ObjectFilenames,
Readers.push_back(std::move(Reader));
DataFound |= !Readers.empty();
if (Error E = loadFromReaders(Readers, *ProfileReader, *Coverage))
- return std::move(E);
+ return createFileError(File.value(), std::move(E));
}
// If no readers were created, either no objects were provided or none of them
// had coverage data. Return an error in the latter case.
if (!DataFound && !ObjectFilenames.empty())
- return make_error<CoverageMapError>(coveragemap_error::no_data_found);
+ return createFileError(
+ join(ObjectFilenames.begin(), ObjectFilenames.end(), ", "),
+ make_error<CoverageMapError>(coveragemap_error::no_data_found));
return std::move(Coverage);
}