summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-cov/multiple-objects.test
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2017-09-15 23:00:02 +0000
committerVedant Kumar <vsk@apple.com>2017-09-15 23:00:02 +0000
commit51d8f887db26815576af25c24c5c70b1b03b6830 (patch)
treec814b7670fc0473b1f57796569e42ff68152a152 /llvm/test/tools/llvm-cov/multiple-objects.test
parentc445e65d0969dba334b4b1cb545457f98f5c654c (diff)
downloadbcm5719-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.test17
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
OpenPOWER on IntegriCloud