1
0
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:
Zequan Wu 2020-10-13 18:40:45 -07:00
parent cce078ae12
commit 1bb71afff1
3 changed files with 21 additions and 3 deletions

View File

@ -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%

View File

@ -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:

View File

@ -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))