diff options
author | Vedant Kumar <vsk@apple.com> | 2017-09-15 23:00:02 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2017-09-15 23:00:02 +0000 |
commit | 51d8f887db26815576af25c24c5c70b1b03b6830 (patch) | |
tree | c814b7670fc0473b1f57796569e42ff68152a152 /llvm/test/tools/llvm-cov/multiple-objects.test | |
parent | c445e65d0969dba334b4b1cb545457f98f5c654c (diff) | |
download | bcm5719-llvm-51d8f887db26815576af25c24c5c70b1b03b6830.tar.gz bcm5719-llvm-51d8f887db26815576af25c24c5c70b1b03b6830.zip |
[llvm-cov] Avoid over-counting covered lines and regions
* Fix an unsigned integer overflow in the logic that computes the
number of uncovered lines in a function.
* When aggregating region and line coverage summaries, take into account
that different instantiations may have a different number of regions.
The new test case provides test coverage for both bugs. I also verified
this change by preparing a coverage report for a stage2 build of llc --
the new assertions should detect any outstanding over-counting bugs.
Fixes PR34613.
llvm-svn: 313417
Diffstat (limited to 'llvm/test/tools/llvm-cov/multiple-objects.test')
-rw-r--r-- | llvm/test/tools/llvm-cov/multiple-objects.test | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-cov/multiple-objects.test b/llvm/test/tools/llvm-cov/multiple-objects.test new file mode 100644 index 00000000000..f23a16d4cac --- /dev/null +++ b/llvm/test/tools/llvm-cov/multiple-objects.test @@ -0,0 +1,17 @@ +RUN: llvm-cov report -instr-profile %S/Inputs/multiple_objects/merged.profdata \ +RUN: %S/Inputs/multiple_objects/use_2.covmapping \ +RUN: -object %S/Inputs/multiple_objects/use_1.covmapping | FileCheck -check-prefix=REPORT %s + +REPORT: Filename{{ +}}Regions{{ +}}Missed Regions{{ +}}Cover +REPORT-NEXT: --- +REPORT-NEXT: header.h{{ +}}25{{ +}}14{{ +}}44.00% + +Instructions for regenerating the test: + +clang -std=c++11 -mllvm -enable-name-compression=false -fprofile-instr-generate -fcoverage-mapping use_1.cc -o use_1 +clang -std=c++11 -mllvm -enable-name-compression=false -fprofile-instr-generate -fcoverage-mapping use_2.cc -o use_2 +LLVM_PROFILE_FILE="use_1.raw" ./use_1 +LLVM_PROFILE_FILE="use_2.raw" ./use_2 +llvm-profdata merge use_{1,2}.raw -o merged.profdata +llvm-cov convert-for-testing ./use_1 -o ./use_1.covmapping +llvm-cov convert-for-testing ./use_2 -o ./use_2.covmapping |