mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-05 02:07:56 +00:00
[llvm-cov] Generate "report" for given source paths if sources are specified.
Summary: Documentation says that user can specify sources for both "show" and "report" commands. "Show" command respects specified sources, but "report" does not. It is useful to have both "show" and "report" generated for specified sources. Also added tests to for both commands with sources specified. Reviewers: vsk, kcc Reviewed By: vsk Differential Revision: https://reviews.llvm.org/D38860 llvm-svn: 315685
This commit is contained in:
parent
4d22ee666b
commit
80a27c3a17
5
test/tools/llvm-cov/Inputs/sources_specified/abs.h
Normal file
5
test/tools/llvm-cov/Inputs/sources_specified/abs.h
Normal file
@ -0,0 +1,5 @@
|
||||
int abs(int x) {
|
||||
if (x < 0)
|
||||
return -x;
|
||||
return x;
|
||||
}
|
3
test/tools/llvm-cov/Inputs/sources_specified/extra/dec.h
Normal file
3
test/tools/llvm-cov/Inputs/sources_specified/extra/dec.h
Normal file
@ -0,0 +1,3 @@
|
||||
int dec(int x) {
|
||||
return x + 1;
|
||||
}
|
3
test/tools/llvm-cov/Inputs/sources_specified/extra/inc.h
Normal file
3
test/tools/llvm-cov/Inputs/sources_specified/extra/inc.h
Normal file
@ -0,0 +1,3 @@
|
||||
int inc(int x) {
|
||||
return x + 1;
|
||||
}
|
9
test/tools/llvm-cov/Inputs/sources_specified/main.cc
Normal file
9
test/tools/llvm-cov/Inputs/sources_specified/main.cc
Normal file
@ -0,0 +1,9 @@
|
||||
#include "abs.h"
|
||||
#include "extra/dec.h"
|
||||
#include "extra/inc.h"
|
||||
|
||||
int main() {
|
||||
int x = 0;
|
||||
inc(x);
|
||||
return abs(x);
|
||||
}
|
BIN
test/tools/llvm-cov/Inputs/sources_specified/main.covmapping
Normal file
BIN
test/tools/llvm-cov/Inputs/sources_specified/main.covmapping
Normal file
Binary file not shown.
BIN
test/tools/llvm-cov/Inputs/sources_specified/main.profdata
Normal file
BIN
test/tools/llvm-cov/Inputs/sources_specified/main.profdata
Normal file
Binary file not shown.
28
test/tools/llvm-cov/sources-specified.test
Normal file
28
test/tools/llvm-cov/sources-specified.test
Normal file
@ -0,0 +1,28 @@
|
||||
RUN: llvm-cov report -instr-profile %S/Inputs/sources_specified/main.profdata \
|
||||
RUN: %S/Inputs/sources_specified/main.covmapping \
|
||||
RUN: %S/Inputs/sources_specified/main.cc %S/Inputs/sources_specified/extra \
|
||||
RUN: | FileCheck -check-prefix=REPORT %s
|
||||
|
||||
RUN: llvm-cov show -instr-profile %S/Inputs/sources_specified/main.profdata \
|
||||
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
|
||||
|
||||
|
||||
REPORT: {{^}}main.cc{{.*}}
|
||||
REPORT: {{^}}extra{{[/\\]}}{{dec|inc}}.h{{.*}}
|
||||
REPORT: {{^}}extra{{[/\\]}}{{dec|inc}}.h{{.*}}
|
||||
REPORT-NOT: {{^}}abs.h{{.*}}
|
||||
|
||||
SHOW: {{.*}}main.cc{{.*}}
|
||||
SHOW: {{.*}}extra{{[/\\]}}{{dec|inc}}.h{{.*}}
|
||||
SHOW: {{.*}}extra{{[/\\]}}{{dec|inc}}.h{{.*}}
|
||||
SHOW-NOT: {{.*}}abs.h{{.*}}
|
||||
|
||||
Instructions for regenerating the test:
|
||||
|
||||
clang -mllvm -enable-name-compression=false -fprofile-instr-generate -fcoverage-mapping main.cc -o main
|
||||
|
||||
LLVM_PROFILE_FILE="main.raw" ./main
|
||||
llvm-profdata merge main.raw -o main.profdata
|
||||
llvm-cov convert-for-testing ./main -o ./main.covmapping
|
@ -947,7 +947,10 @@ int CodeCoverageTool::report(int argc, const char **argv,
|
||||
|
||||
CoverageReport Report(ViewOpts, *Coverage.get());
|
||||
if (!ShowFunctionSummaries) {
|
||||
Report.renderFileReports(llvm::outs());
|
||||
if (SourceFiles.empty())
|
||||
Report.renderFileReports(llvm::outs());
|
||||
else
|
||||
Report.renderFileReports(llvm::outs(), SourceFiles);
|
||||
} else {
|
||||
if (SourceFiles.empty()) {
|
||||
error("Source files must be specified when -show-functions=true is "
|
||||
|
@ -364,7 +364,12 @@ void CoverageReport::renderFileReports(raw_ostream &OS) const {
|
||||
std::vector<std::string> UniqueSourceFiles;
|
||||
for (StringRef SF : Coverage.getUniqueSourceFiles())
|
||||
UniqueSourceFiles.emplace_back(SF.str());
|
||||
renderFileReports(OS, UniqueSourceFiles, CoverageFiltersMatchAll());
|
||||
renderFileReports(OS, UniqueSourceFiles);
|
||||
}
|
||||
|
||||
void CoverageReport::renderFileReports(
|
||||
raw_ostream &OS, ArrayRef<std::string> Files) const {
|
||||
renderFileReports(OS, Files, CoverageFiltersMatchAll());
|
||||
}
|
||||
|
||||
void CoverageReport::renderFileReports(
|
||||
|
@ -47,6 +47,9 @@ public:
|
||||
/// Render file reports for every unique file in the coverage mapping.
|
||||
void renderFileReports(raw_ostream &OS) const;
|
||||
|
||||
/// Render file reports for the files specified in \p Files.
|
||||
void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files) const;
|
||||
|
||||
/// Render file reports for the files specified in \p Files and the functions
|
||||
/// in \p Filters.
|
||||
void renderFileReports(raw_ostream &OS, ArrayRef<std::string> Files,
|
||||
|
Loading…
Reference in New Issue
Block a user