mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
[llvm-cov] don't include all source files when provided source files are filtered out
When all provided source files are filtered out either due to `--ignore-filename-regex` or not part of binary, don't generate coverage reults for all source files. Because if users want to generate coverage results for all source files, they don't even need to provid selected source files or `--ignore-filename-regex`. Differential Revision: https://reviews.llvm.org/D89359
This commit is contained in:
parent
cce078ae12
commit
1bb71afff1
@ -10,6 +10,18 @@ RUN: %S/Inputs/sources_specified/main.covmapping \
|
||||
RUN: %S/Inputs/sources_specified/main.cc %S/Inputs/sources_specified/extra \
|
||||
RUN: | FileCheck -check-prefix=SHOW %s
|
||||
|
||||
# Don't include all source files when provided source files are filtered out.
|
||||
RUN: llvm-cov show -instr-profile %S/Inputs/sources_specified/main.profdata \
|
||||
RUN: -path-equivalence=/tmp,%S/Inputs \
|
||||
RUN: %S/Inputs/sources_specified/main.covmapping \
|
||||
RUN: --ignore-filename-regex='.*' \
|
||||
RUN: %S/Inputs/sources_specified/main.cc %S/Inputs/sources_specified/extra \
|
||||
RUN: | FileCheck -allow-empty -check-prefix=IGNORE %s
|
||||
|
||||
IGNORE-NOT: {{.*}}main.cc{{.*}}
|
||||
IGNORE-NOT: {{.*}}inc.h{{.*}}
|
||||
IGNORE-NOT: {{.*}}dec.h{{.*}}
|
||||
|
||||
# Order of files may differ, check the total values calculated.
|
||||
REPORT-NOT: {{.*}}abs.h{{.*}}
|
||||
REPORT: {{^}}TOTAL 3{{.*}}72.73%
|
||||
|
@ -17,11 +17,11 @@ REQUIRES: zlib
|
||||
RUN: llvm-profdata merge %S/Inputs/universal_bin_wrapping_archives/universal_bin_wrapping_archives.proftext -o %t.profdata
|
||||
|
||||
RUN: llvm-cov show %S/Inputs/universal_bin_wrapping_archives/universal_bin_wrapping_archives \
|
||||
RUN: -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs/universal_bin_wrapping_archives %s -arch i386 \
|
||||
RUN: -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs/universal_bin_wrapping_archives -arch i386 \
|
||||
RUN: | FileCheck %s --check-prefix=SHOW_ARCHIVE
|
||||
|
||||
RUN: llvm-cov show %S/Inputs/universal_bin_wrapping_archives/universal_bin_wrapping_archives \
|
||||
RUN: -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs/universal_bin_wrapping_archives %s -arch x86_64 \
|
||||
RUN: -instr-profile %t.profdata -path-equivalence=/tmp,%S/Inputs/universal_bin_wrapping_archives -arch x86_64 \
|
||||
RUN: | FileCheck %s --check-prefix=SHOW_ARCHIVE
|
||||
|
||||
SHOW_ARCHIVE: {{.*}}obj1.c:
|
||||
|
@ -130,6 +130,9 @@ private:
|
||||
CoverageFiltersMatchAll Filters;
|
||||
CoverageFilters IgnoreFilenameFilters;
|
||||
|
||||
/// True if InputSourceFiles are provided.
|
||||
bool HadSourceFiles = false;
|
||||
|
||||
/// The path to the indexed profile.
|
||||
std::string PGOFilename;
|
||||
|
||||
@ -194,6 +197,7 @@ void CodeCoverageTool::addCollectedPath(const std::string &Path) {
|
||||
sys::path::remove_dots(EffectivePath, /*remove_dot_dots=*/true);
|
||||
if (!IgnoreFilenameFilters.matchesFilename(EffectivePath))
|
||||
SourceFiles.emplace_back(EffectivePath.str());
|
||||
HadSourceFiles = !SourceFiles.empty();
|
||||
}
|
||||
|
||||
void CodeCoverageTool::collectPaths(const std::string &Path) {
|
||||
@ -397,6 +401,7 @@ void CodeCoverageTool::remapPathNames(const CoverageMapping &Coverage) {
|
||||
sys::path::native(Path, NativePath);
|
||||
if (!sys::path::is_separator(NativePath.back()))
|
||||
NativePath += sys::path::get_separator();
|
||||
sys::path::remove_dots(NativePath, true);
|
||||
return NativePath.c_str();
|
||||
};
|
||||
std::string RemapFrom = nativeWithTrailing(PathRemapping->first);
|
||||
@ -406,6 +411,7 @@ void CodeCoverageTool::remapPathNames(const CoverageMapping &Coverage) {
|
||||
for (StringRef Filename : Coverage.getUniqueSourceFiles()) {
|
||||
SmallString<128> NativeFilename;
|
||||
sys::path::native(Filename, NativeFilename);
|
||||
sys::path::remove_dots(NativeFilename, true);
|
||||
if (NativeFilename.startswith(RemapFrom)) {
|
||||
RemappedFilenames[Filename] =
|
||||
RemapTo + NativeFilename.substr(RemapFrom.size()).str();
|
||||
@ -895,7 +901,7 @@ int CodeCoverageTool::doShow(int argc, const char **argv,
|
||||
|
||||
auto Printer = CoveragePrinter::create(ViewOpts);
|
||||
|
||||
if (SourceFiles.empty())
|
||||
if (SourceFiles.empty() && !HadSourceFiles)
|
||||
// Get the source files from the function coverage mapping.
|
||||
for (StringRef Filename : Coverage->getUniqueSourceFiles()) {
|
||||
if (!IgnoreFilenameFilters.matchesFilename(Filename))
|
||||
|
Loading…
Reference in New Issue
Block a user