[PATCH] D130196: [llvm-cov] Improve error message by printing the object file name that produces error
Zequan Wu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 21 11:27:06 PDT 2022
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG4979b16db1b7: [llvm-cov] Improve error message by printing the object file name that produces… (authored by zequanwu).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D130196/new/
https://reviews.llvm.org/D130196
Files:
llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
llvm/test/tools/llvm-cov/missing-binaries.test
llvm/test/tools/llvm-cov/universal-binary.c
llvm/test/tools/llvm-cov/warnings.h
llvm/tools/llvm-cov/CodeCoverage.cpp
Index: llvm/tools/llvm-cov/CodeCoverage.cpp
===================================================================
--- llvm/tools/llvm-cov/CodeCoverage.cpp
+++ llvm/tools/llvm-cov/CodeCoverage.cpp
@@ -436,8 +436,7 @@
CoverageMapping::load(ObjectFilenames, PGOFilename, CoverageArches,
ViewOpts.CompilationDirectory);
if (Error E = CoverageOrErr.takeError()) {
- error("Failed to load coverage: " + toString(std::move(E)),
- join(ObjectFilenames.begin(), ObjectFilenames.end(), ", "));
+ error("Failed to load coverage: " + toString(std::move(E)));
return nullptr;
}
auto Coverage = std::move(CoverageOrErr.get());
Index: llvm/test/tools/llvm-cov/warnings.h
===================================================================
--- llvm/test/tools/llvm-cov/warnings.h
+++ llvm/test/tools/llvm-cov/warnings.h
@@ -13,4 +13,4 @@
// FAKE-FUNC-STDERR: Could not read coverage for '{{.*}}'.
// 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
-// MALFORMED-REGION: malformedRegions.covmapping: Failed to load coverage: Malformed coverage data
+// MALFORMED-REGION: Failed to load coverage: '{{.*}}malformedRegions.covmapping': Malformed coverage data
Index: llvm/test/tools/llvm-cov/universal-binary.c
===================================================================
--- llvm/test/tools/llvm-cov/universal-binary.c
+++ llvm/test/tools/llvm-cov/universal-binary.c
@@ -14,7 +14,7 @@
// RUN: not llvm-cov show %S/Inputs/universal-binary -instr-profile %t.profdata -path-equivalence=/tmp,%S %s 2>&1 | FileCheck --check-prefix=WRONG-ARCH %s
// RUN: not llvm-cov show %S/Inputs/universal-binary -instr-profile %t.profdata -path-equivalence=/tmp,%S %s -arch i386 2>&1 | FileCheck --check-prefix=WRONG-ARCH %s
-// WRONG-ARCH: Failed to load coverage: `-arch` specifier is invalid or missing for universal binary
+// WRONG-ARCH: Failed to load coverage: '{{.*}}universal-binary': `-arch` specifier is invalid or missing for universal binary
// RUN: not llvm-cov show %S/Inputs/universal-binary -instr-profile %t.profdata -path-equivalence=/tmp,%S %s -arch definitly_a_made_up_architecture 2>&1 | FileCheck --check-prefix=MADE-UP-ARCH %s
// MADE-UP-ARCH: Unknown architecture: definitly_a_made_up_architecture
Index: llvm/test/tools/llvm-cov/missing-binaries.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-cov/missing-binaries.test
@@ -0,0 +1,4 @@
+RUN: llvm-profdata merge %S/Inputs/binary-formats.proftext -o %t.profdata
+RUN: not llvm-cov show -instr-profile=%t.profdata --object=%t.nonexistent.binary.1 --object=%t.nonexistent.binary.2 2>&1 | FileCheck %s
+
+CHECK: Failed to load coverage: '{{.*}}nonexistent.binary.1':
Index: llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
===================================================================
--- llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
+++ llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
@@ -349,7 +349,7 @@
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 @@
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 @@
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 @@
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);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D130196.446585.patch
Type: text/x-patch
Size: 5094 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220721/4f59eed0/attachment.bin>
More information about the llvm-commits
mailing list