summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-cov
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2017-09-18 23:37:28 +0000
committerVedant Kumar <vsk@apple.com>2017-09-18 23:37:28 +0000
commitad8f637bd83aeeca7321d6c74b3d7787587c0d55 (patch)
treee771084274c8fde30518a8c9f08c7ffb4e2cd3dd /llvm/test/tools/llvm-cov
parent27d1b14ab056a3de64cf93c80a10886e2dc904f7 (diff)
downloadbcm5719-llvm-ad8f637bd83aeeca7321d6c74b3d7787587c0d55.tar.gz
bcm5719-llvm-ad8f637bd83aeeca7321d6c74b3d7787587c0d55.zip
[Coverage] Use gap regions to select better line exec counts
After clang started emitting deferred regions (r312818), llvm-cov has had a hard time picking reasonable line execuction counts. There have been one or two generic improvements in this area (e.g r310012), but line counts can still report coverage for whitespace instead of code (llvm.org/PR34612). To fix the problem: * Introduce a new region kind so that frontends can explicitly label gap areas. This is done by changing the encoding of the columnEnd field of MappingRegion. This doesn't substantially increase binary size, and makes it easy to maintain backwards-compatibility. * Don't set the line count to a count from a gap area, unless the count comes from a wrapped segment. * Don't highlight gap areas as uncovered. Fixes llvm.org/PR34612. llvm-svn: 313597
Diffstat (limited to 'llvm/test/tools/llvm-cov')
-rw-r--r--llvm/test/tools/llvm-cov/Inputs/deferred-regions.covmappingbin688 -> 728 bytes
-rw-r--r--llvm/test/tools/llvm-cov/deferred-region.cpp32
2 files changed, 11 insertions, 21 deletions
diff --git a/llvm/test/tools/llvm-cov/Inputs/deferred-regions.covmapping b/llvm/test/tools/llvm-cov/Inputs/deferred-regions.covmapping
index 757f3eea720..4434b66513c 100644
--- a/llvm/test/tools/llvm-cov/Inputs/deferred-regions.covmapping
+++ b/llvm/test/tools/llvm-cov/Inputs/deferred-regions.covmapping
Binary files differ
diff --git a/llvm/test/tools/llvm-cov/deferred-region.cpp b/llvm/test/tools/llvm-cov/deferred-region.cpp
index 1b191ac0f1a..6f6da7ec804 100644
--- a/llvm/test/tools/llvm-cov/deferred-region.cpp
+++ b/llvm/test/tools/llvm-cov/deferred-region.cpp
@@ -1,7 +1,7 @@
// RUN: llvm-cov show %S/Inputs/deferred-regions.covmapping -instr-profile %S/Inputs/deferred-regions.profdata -show-line-counts-or-regions -dump -path-equivalence=/Users/vk/src/llvm.org-coverage-braces/llvm/test/tools,%S/.. %s 2>%t.markers > %t.out && FileCheck %s -input-file %t.out && FileCheck %s -input-file %t.markers -check-prefix=MARKER
void foo(int x) {
- if (x == 0) {
+ if (x == 0) { // CHECK: [[@LINE]]|{{ +}}2|
return; // CHECK: [[@LINE]]|{{ +}}1|
}
@@ -17,10 +17,10 @@ void for_loop() {
return; // CHECK: [[@LINE]]|{{ +}}0|
for (int i = 0; i < 10; ++i) { // CHECK: [[@LINE]]|{{ +}}2|
- if (i % 2 == 0)
+ if (i % 2 == 0) // CHECK: [[@LINE]]|{{ +}}2|
continue; // CHECK: [[@LINE]]|{{ +}}1|
- if (i % 5 == 0)
+ if (i % 5 == 0) // CHECK: [[@LINE]]|{{ +}}1|
break; // CHECK: [[@LINE]]|{{ +}}0|
int x = i;
@@ -37,19 +37,19 @@ void while_loop() {
int x = 0;
while (++x < 10) { // CHECK: [[@LINE]]|{{ +}}3|
- if (x == 1)
+ if (x == 1) // CHECK: [[@LINE]]|{{ +}}2|
continue; // CHECK: [[@LINE]]|{{ +}}1|
while (++x < 4) { // CHECK: [[@LINE]]|{{ +}}1|
- if (x == 3)
+ if (x == 3) // CHECK: [[@LINE]]|{{ +}}1|
break; // CHECK: [[@LINE]]|{{ +}}1|
// CHECK: [[@LINE]]|{{ +}}0|
while (++x < 5) {} // CHECK: [[@LINE]]|{{ +}}0|
} // CHECK: [[@LINE]]|{{ +}}1|
- if (x == 0)
+ if (x == 0) // CHECK: [[@LINE]]|{{ +}}1|
throw Error(); // CHECK: [[@LINE]]|{{ +}}0|
-
+ // CHECK: [[@LINE]]|{{ +}}1|
while (++x < 9) { // CHECK: [[@LINE]]|{{ +}}6|
if (x == 0) // CHECK: [[@LINE]]|{{ +}}5|
break; // CHECK: [[@LINE]]|{{ +}}0|
@@ -59,12 +59,12 @@ void while_loop() {
}
void gotos() {
- if (false)
+ if (false) // CHECK: [[@LINE]]|{{ +}}1|
goto out; // CHECK: [[@LINE]]|{{ +}}0|
+ // CHECK: [[@LINE]]|{{ +}}1|
+ return; // CHECK: [[@LINE]]|{{ +}}1|
- return;
-
-out: // CHECK: [[@LINE]]|{{ +}}1|
+out: // CHECK: [[@LINE]]|{{ +}}0|
return;
}
@@ -80,23 +80,16 @@ int main() {
// MARKER: Marker at 4:7 = 2
// MARKER-NEXT: Highlighted line 17, 5 -> 11
-// MARKER-NEXT: Marker at 17:5 = 0
// MARKER-NEXT: Marker at 19:3 = 1
// MARKER-NEXT: Marker at 19:19 = 2
// MARKER-NEXT: Marker at 19:27 = 1
-// MARKER-NEXT: Marker at 21:7 = 1
// MARKER-NEXT: Marker at 23:5 = 1
// MARKER-NEXT: Marker at 23:9 = 1
// MARKER-NEXT: Highlighted line 24, 7 -> 12
-// MARKER-NEXT: Marker at 24:7 = 0
// MARKER-NEXT: Highlighted line 36, 5 -> 11
-// MARKER-NEXT: Marker at 36:5 = 0
// MARKER-NEXT: Marker at 39:10 = 3
-// MARKER-NEXT: Marker at 41:7 = 1
// MARKER-NEXT: Marker at 43:5 = 1
// MARKER-NEXT: Marker at 43:12 = 1
-// MARKER-NEXT: Highlighted line 45, 14 -> ?
-// MARKER-NEXT: Marker at 45:9 = 1
// MARKER-NEXT: Highlighted line 46, 1 -> ?
// MARKER-NEXT: Highlighted line 47, 1 -> 7
// MARKER-NEXT: Highlighted line 47, 7 -> 14
@@ -107,13 +100,10 @@ int main() {
// MARKER-NEXT: Marker at 47:14 = 0
// MARKER-NEXT: Marker at 47:23 = 0
// MARKER-NEXT: Highlighted line 51, 7 -> 20
-// MARKER-NEXT: Marker at 51:7 = 0
// MARKER-NEXT: Marker at 53:5 = 1
// MARKER-NEXT: Marker at 53:12 = 6
// MARKER-NEXT: Highlighted line 55, 9 -> 14
// MARKER-NEXT: Highlighted line 63, 5 -> 13
-// MARKER-NEXT: Marker at 63:5 = 0
// MARKER-NEXT: Highlighted line 67, 1 -> ?
// MARKER-NEXT: Highlighted line 68, 1 -> 8
-// MARKER-NEXT: Highlighted line 68, 8 -> ?
// MARKER-NEXT: Highlighted line 69, 1 -> 2
OpenPOWER on IntegriCloud