diff options
Diffstat (limited to 'test/CoverageMapping')
26 files changed, 467 insertions, 149 deletions
diff --git a/test/CoverageMapping/Inputs/deferred-region-helper.h b/test/CoverageMapping/Inputs/deferred-region-helper.h new file mode 100644 index 000000000000..c3e5c16e32a7 --- /dev/null +++ b/test/CoverageMapping/Inputs/deferred-region-helper.h @@ -0,0 +1,5 @@ +void included_func() { + if (false) + return; + return; +} diff --git a/test/CoverageMapping/abspath.cpp b/test/CoverageMapping/abspath.cpp index 667172e32cf4..4b92a3773db0 100644 --- a/test/CoverageMapping/abspath.cpp +++ b/test/CoverageMapping/abspath.cpp @@ -4,7 +4,7 @@ // RMDOTS-NOT: Inputs // RMDOTS: " -// RUN: cd %T && mkdir -p test && cd test +// RUN: mkdir -p %t/test && cd %t/test // RUN: echo "void f1() {}" > f1.c // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -main-file-name abspath.cpp ../test/f1.c -o - | FileCheck -check-prefix=RELPATH %s diff --git a/test/CoverageMapping/break.c b/test/CoverageMapping/break.c index ee41271b53fb..d42c1bd082d2 100644 --- a/test/CoverageMapping/break.c +++ b/test/CoverageMapping/break.c @@ -2,29 +2,29 @@ int main() { // CHECK: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int cnt = 0; // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:18 = #0 - while(cnt < 100) { // CHECK-NEXT: File 0, [[@LINE]]:20 -> [[@LINE+3]]:4 = #1 + while(cnt < 100) { // CHECK: File 0, [[@LINE]]:20 -> [[@LINE+3]]:4 = #1 break; ++cnt; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+1]]:4 = 0 } // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:18 = #0 - while(cnt < 100) { // CHECK-NEXT: File 0, [[@LINE]]:20 -> [[@LINE+6]]:4 = #2 + while(cnt < 100) { // CHECK: File 0, [[@LINE]]:20 -> [[@LINE+6]]:4 = #2 { break; ++cnt; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE+3]]:4 = 0 } ++cnt; } // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:18 = ((#0 + #3) - #4) - while(cnt < 100) { // CHECK-NEXT: File 0, [[@LINE]]:20 -> [[@LINE+7]]:4 = #3 + while(cnt < 100) { // CHECK: File 0, [[@LINE]]:20 -> [[@LINE+7]]:4 = #3 // CHECK-NEXT: File 0, [[@LINE+1]]:8 -> [[@LINE+1]]:16 = #3 - if(cnt == 0) { // CHECK-NEXT: File 0, [[@LINE]]:18 -> [[@LINE+3]]:6 = #4 + if(cnt == 0) { // CHECK: File 0, [[@LINE]]:18 -> [[@LINE+3]]:6 = #4 break; ++cnt; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE+1]]:6 = 0 } ++cnt; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+1]]:4 = (#3 - #4) } // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:18 = (#0 + #6) - while(cnt < 100) { // CHECK-NEXT: File 0, [[@LINE]]:20 -> [[@LINE+8]]:4 = #5 + while(cnt < 100) { // CHECK: File 0, [[@LINE]]:20 -> [[@LINE+8]]:4 = #5 // CHECK-NEXT: File 0, [[@LINE+1]]:8 -> [[@LINE+1]]:16 = #5 - if(cnt == 0) { // CHECK-NEXT: File 0, [[@LINE]]:18 -> [[@LINE+2]]:6 = #6 - ++cnt; + if(cnt == 0) { // CHECK: File 0, [[@LINE]]:18 -> [[@LINE+2]]:6 = #6 + ++cnt; // CHECK-NEXT: Gap,File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:12 = (#5 - #6) } else { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+2]]:6 = (#5 - #6) break; } diff --git a/test/CoverageMapping/casts.c b/test/CoverageMapping/casts.c index d295f3159875..6f479fd58838 100644 --- a/test/CoverageMapping/casts.c +++ b/test/CoverageMapping/casts.c @@ -1,7 +1,7 @@ // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name casts.c %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+4]]:2 = #0 - // CHECK-NEXT: File 0, [[@LINE+1]]:41 -> [[@LINE+1]]:54 = #1 + // CHECK: File 0, [[@LINE+1]]:41 -> [[@LINE+1]]:54 = #1 int window_size = (sizeof(int) <= 2 ? (unsigned)512 : 1024); // CHECK-NEXT: File 0, [[@LINE]]:57 -> [[@LINE]]:61 = (#0 - #1) return 0; } diff --git a/test/CoverageMapping/continue.c b/test/CoverageMapping/continue.c index 7ea03fb68624..9864c912f239 100644 --- a/test/CoverageMapping/continue.c +++ b/test/CoverageMapping/continue.c @@ -3,21 +3,21 @@ int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+21]]:2 = #0 int j = 0; // CHECK-NEXT: File 0, [[@LINE+2]]:18 -> [[@LINE+2]]:24 = (#0 + #1) // CHECK-NEXT: File 0, [[@LINE+1]]:26 -> [[@LINE+1]]:29 = #1 - for(int i = 0; i < 20; ++i) { // CHECK-NEXT: File 0, [[@LINE]]:31 -> [[@LINE+17]]:4 = #1 + for(int i = 0; i < 20; ++i) { // CHECK: File 0, [[@LINE]]:31 -> [[@LINE+17]]:4 = #1 if(i < 10) { // CHECK: File 0, [[@LINE]]:16 -> [[@LINE+13]]:6 = #2 if(i < 5) { // CHECK: File 0, [[@LINE]]:17 -> [[@LINE+3]]:8 = #3 continue; j = 1; // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE+1]]:8 = 0 - } else { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+2]]:8 = (#2 - #3) + } else { // CHECK: File 0, [[@LINE]]:14 -> [[@LINE+2]]:8 = (#2 - #3) j = 2; } j = 3; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE+6]]:6 = (#2 - #3) if(i < 7) { // CHECK: File 0, [[@LINE]]:17 -> [[@LINE+3]]:8 = #4 continue; j = 4; // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE+1]]:8 = 0 - } else j = 5; // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE]]:19 = ((#2 - #3) - #4) + } else j = 5; // CHECK: File 0, [[@LINE]]:14 -> [[@LINE]]:19 = ((#2 - #3) - #4) j = 6; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE+1]]:6 = ((#2 - #3) - #4) - } else // CHECK-NEXT: File 0, [[@LINE+1]]:7 -> [[@LINE+1]]:12 = (#1 - #2) + } else // CHECK: File 0, [[@LINE+1]]:7 -> [[@LINE+1]]:12 = (#1 - #2) j = 7; j = 8; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+1]]:4 = ((#1 - #3) - #4) } diff --git a/test/CoverageMapping/deferred-region.cpp b/test/CoverageMapping/deferred-region.cpp new file mode 100644 index 000000000000..5a104f778979 --- /dev/null +++ b/test/CoverageMapping/deferred-region.cpp @@ -0,0 +1,204 @@ +// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -fexceptions -fcxx-exceptions -emit-llvm-only -triple %itanium_abi_triple -main-file-name deferred-region.cpp -I %S/Inputs %s | FileCheck %s + +#define IF if +#define STMT(S) S + +// CHECK-LABEL: _Z3fooi: +void foo(int x) { + if (x == 0) { + return; + } // CHECK: Gap,File 0, [[@LINE]]:4 -> [[@LINE+2]]:2 = (#0 - #1) + +} + +// CHECK-NEXT: _Z4foooi: +void fooo(int x) { + if (x == 0) { + return; + } // CHECK: Gap,File 0, [[@LINE]]:4 -> [[@LINE+2]]:3 = (#0 - #1) + + if (x == 1) { + return; + } // CHECK: Gap,File 0, [[@LINE]]:4 -> [[@LINE+2]]:2 = ((#0 - #1) - #2) + +} + +// CHECK-LABEL: _Z3bazv: +void baz() { // CHECK: [[@LINE]]:12 -> [[@LINE+2]]:2 + return; // CHECK-NOT: File +} + +// CHECK-LABEL: _Z3mazv: +void maz() { + if (true) + return; // CHECK: Gap,File 0, [[@LINE]]:11 -> [[@LINE+2]]:3 = (#0 - #1) + + return; // CHECK-NOT: Gap +} + +// CHECK-LABEL: _Z4maazv: +void maaz() { + if (true) + return; // CHECK: Gap,File 0, [[@LINE]]:11 + else + return; // CHECK-NOT: Gap,File 0, [[@LINE]] +} + +// CHECK-LABEL: _Z5maaazv: +void maaaz() { + if (true) { + return; + } else { // CHECK: Gap,File 0, [[@LINE]]:4 -> [[@LINE]]:10 + return; // CHECK-NOT: Gap,File 0, [[@LINE]] + } +} + +// CHECK-LABEL: _Z3bari: +void bar(int x) { + IF (x) + return; // CHECK: Gap,File 0, [[@LINE]]:11 -> [[@LINE+2]]:3 = (#0 - #1) + + IF (!x) + return; // CHECK: Gap,File 0, [[@LINE]]:11 -> [[@LINE+2]]:3 = ((#0 - #1) - #2) + + foo(x); +} + +// CHECK-LABEL: _Z4quuxi: +// Deferred regions are not emitted within macro expansions. +void quux(int x) { + STMT( + if (x == 0) + return;) + + // CHECK-NOT: [[@LINE-2]]:{{.*}} -> [[@LINE+2]] + + if (x == 1) + STMT(return;) + + // CHECK-NOT: [[@LINE-2]]:{{.*}} -> [[@LINE+3]] + + STMT( + if (x == 2) + return; + + // CHECK-NOT: [[@LINE-2]]:{{.*}} -> [[@LINE+2]] + + if (x == 3) + return; + ) +} + +// CHECK-LABEL: _Z8weird_ifv: +void weird_if() { + int i = 0; + + if (false) + return; // CHECK: Gap,File 0, [[@LINE]]:11 -> [[@LINE+2]]:3 = (#0 - #1) + + if (false) + i++; + + if (i + 100 > 0) { // CHECK: [[@LINE]]:20 -> [[@LINE+6]]:4 = #3 + if (false) // CHECK: [[@LINE+1]]:7 -> [[@LINE+1]]:13 = #4 + return; // CHECK: Gap,File 0, [[@LINE]]:13 -> [[@LINE+2]]:5 = (#3 - #4) + // CHECK: [[@LINE+1]]:5 -> [[@LINE+3]]:4 = (#3 - #4) + return; // CHECK: Gap,File 0, [[@LINE]]:5 -> [[@LINE+4]]:3 = ((#0 - #1) - #3) + + } + + if (false) + return; // CHECK: Gap,File 0, [[@LINE]]:11 -> [[@LINE+1]]:2 +} + +// CHECK-LABEL: _Z8for_loopv: +void for_loop() { + if (false) + return; // CHECK: Gap,File 0, [[@LINE]]:11 -> [[@LINE+2]]:3 = (#0 - #1) + + for (int i = 0; i < 10; ++i) { + if (i % 2 == 0) + continue; // CHECK: Gap,File 0, [[@LINE]]:15 -> [[@LINE+2]]:5 = (#2 - #3) + + if (i % 5 == 0) + break; // CHECK: Gap,File 0, [[@LINE]]:12 -> [[@LINE+2]]:5 = ((#2 - #3) - #4) + + int x = i; // CHECK: [[@LINE]]:5 -> [[@LINE+3]]:4 = ((#2 - #3) - #4) + return; // CHECK-NOT: [[@LINE]]:11 -> [[@LINE+2]] + + } +} + +struct Error {}; + +// CHECK-LABEL: _Z10while_loopv: +void while_loop() { + if (false) + return; // CHECK: Gap,File 0, [[@LINE]]:11 -> [[@LINE+2]]:3 = (#0 - #1) + + int x = 0; + while (++x < 10) { + if (x == 1) + continue; // CHECK: Gap,File 0, [[@LINE]]:15 -> [[@LINE+2]]:5 = (#2 - #3) + + while (++x < 4) { + if (x == 3) + break; // CHECK: Gap,File 0, [[@LINE]]:14 -> [[@LINE+2]]:7 = (#4 - #5) + + while (++x < 5) {} + } + + if (x == 0) + throw Error(); // CHECK: Gap,File 0, [[@LINE]]:20 -> [[@LINE+2]]:5 = ((#2 - #3) - #7) + + while (++x < 9) { + if (x == 0) + break; // CHECK-NOT: [[@LINE]]:14 -> [[@LINE+2]] + + } + } +} + +// CHECK-LABEL: _Z5gotosv: +void gotos() { + if (false) + goto out; // CHECK: Gap,File 0, [[@LINE]]:13 -> [[@LINE+2]]:3 = (#0 - #1) + + return; // CHECK: [[@LINE]]:3 -> [[@LINE+4]]:2 = (#0 - #1) + +out: + return; // CHECK: Gap,File 0, [[@LINE]]:8 -> [[@LINE+1]]:2 = 0 +} + +#include "deferred-region-helper.h" +// CHECK-LABEL: _Z13included_funcv: +// CHECK: Gap,File 0, 2:13 -> 3:5 = #1 +// CHECK: Gap,File 0, 3:11 -> 4:3 = (#0 - #1) + +// CHECK-LABEL: _Z7includev: +void include() { + included_func(); +} + +int main() { + foo(0); + foo(1); + fooo(0); + fooo(1); + maz(); + maaz(); + maaaz(); + baz(); + bar(0); + bar(1); + quux(0); + quux(1); + quux(2); + quux(3); + weird_if(); + for_loop(); + while_loop(); + gotos(); + include(); + return 0; +} diff --git a/test/CoverageMapping/header.cpp b/test/CoverageMapping/header.cpp index 5e0b3111c1d3..d42c15444664 100644 --- a/test/CoverageMapping/header.cpp +++ b/test/CoverageMapping/header.cpp @@ -2,6 +2,9 @@ // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-FUNC // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-STATIC-FUNC // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-STATIC-FUNC2 +// +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -mllvm -limited-coverage-experimental=true -dump-coverage-mapping -emit-llvm-only -main-file-name header.cpp %s > %tmapping.limited +// RUN: FileCheck -input-file %tmapping.limited %s --check-prefix=CHECK-LIMITED #include "Inputs/header1.h" @@ -22,3 +25,5 @@ int main() { // CHECK-STATIC-FUNC2: static_func2 // CHECK-STATIC-FUNC2: File 0, 21:33 -> 29:2 = 0 + +// CHECK-LIMITED-NOT: static_func2 diff --git a/test/CoverageMapping/if.cpp b/test/CoverageMapping/if.cpp index 95e6d8abe63e..e3d6f4e25e57 100644 --- a/test/CoverageMapping/if.cpp +++ b/test/CoverageMapping/if.cpp @@ -3,37 +3,50 @@ int nop() { return 0; } // CHECK-LABEL: _Z3foov: -void foo() { // CHECK-NEXT: [[@LINE]]:12 -> [[@LINE+5]]:2 = #0 + // CHECK-NEXT: [[@LINE+1]]:12 -> [[@LINE+6]]:2 = #0 +void foo() { // CHECK-NEXT: Gap,File 0, [[@LINE+1]]:20 -> [[@LINE+1]]:22 = #2 if (int j = true ? nop() // CHECK-NEXT: [[@LINE]]:22 -> [[@LINE]]:27 = #2 : nop(); // CHECK-NEXT: [[@LINE]]:22 -> [[@LINE]]:27 = (#0 - #2) j) // CHECK-NEXT: [[@LINE]]:7 -> [[@LINE]]:8 = #0 - ++j; // CHECK-NEXT: [[@LINE]]:5 -> [[@LINE]]:8 = #1 -} + ++j; // CHECK-NEXT: [[@LINE-1]]:9 -> [[@LINE]]:5 = #1 +} // CHECK-NEXT: [[@LINE-1]]:5 -> [[@LINE-1]]:8 = #1 // CHECK-LABEL: main: int main() { // CHECK: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int i = 0; - // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:12 = #0 + // CHECK-NEXT: File 0, [[@LINE+2]]:6 -> [[@LINE+2]]:12 = #0 + // CHECK-NEXT: Gap,File 0, [[@LINE+1]]:13 -> [[@LINE+1]]:14 = #1 if(i == 0) i = 1; // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE]]:19 = #1 + // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:12 = #0 - if(i == 1) + if(i == 1) // CHECK-NEXT: Gap,File 0, [[@LINE]]:13 -> [[@LINE+1]]:5 = #2 i = 2; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:10 = #2 + // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:12 = #0 - if(i == 0) { i = 1; // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+2]]:4 = #3 - i = 2; + if(i == 0) { i = 1; // CHECK-NEXT: Gap,File 0, [[@LINE]]:13 -> [[@LINE]]:14 = #3 + i = 2; // CHECK-NEXT: File 0, [[@LINE-1]]:14 -> [[@LINE+1]]:4 = #3 } // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:12 = #0 - if(i != 0) { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+2]]:4 = #4 - i = 1; - } else { // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE+2]]:4 = (#0 - #4) - i = 3; + if(i != 0) { // CHECK-NEXT: Gap,File 0, [[@LINE]]:13 -> [[@LINE]]:14 = #4 + i = 1; // CHECK-NEXT: File 0, [[@LINE-1]]:14 -> [[@LINE+1]]:4 = #4 + } else { // CHECK-NEXT: Gap,File 0, [[@LINE]]:4 -> [[@LINE]]:10 = (#0 - #4) + i = 3; // CHECK-NEXT: File 0, [[@LINE-1]]:10 -> [[@LINE+1]]:4 = (#0 - #4) } - i = i == 0? + i = i == 0? // CHECK-NEXT: Gap,File 0, [[@LINE]]:13 -> [[@LINE+1]]:9 = #5 i + 1 : // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:14 = #5 i + 2; // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:14 = (#0 - #5) + + // CHECK-NEXT: Gap,File 0, [[@LINE+2]]:13 -> [[@LINE+2]]:14 = #6 // CHECK-NEXT: File 0, [[@LINE+1]]:14 -> [[@LINE+1]]:20 = #6 i = i == 0?i + 12:i + 10; // CHECK-NEXT: File 0, [[@LINE]]:21 -> [[@LINE]]:27 = (#0 - #6) return 0; } + +#define FOO true + +// CHECK-LABEL: _Z7ternaryv: +void ternary() { + true ? FOO : FOO; // CHECK-NOT: Gap,{{.*}}, [[@LINE]]:8 -> +} diff --git a/test/CoverageMapping/includehell.cpp b/test/CoverageMapping/includehell.cpp index 9ad3683abe11..fd08d6af7f3d 100644 --- a/test/CoverageMapping/includehell.cpp +++ b/test/CoverageMapping/includehell.cpp @@ -37,43 +37,43 @@ int main() { // CHECK-MAIN-NEXT: File [[MAIN]], 16:35 -> 17:33 = #9 // CHECK-MAIN-NEXT: Expansion,File [[MAIN]], 17:12 -> 17:33 = #9 -// CHECK-START: File [[START1:[0-9]]], 1:1 -> 5:1 = #0 -// CHECK-START-NEXT: File [[START1]], 4:17 -> 4:22 = (#0 + #1) -// CHECK-START-NEXT: File [[START1]], 4:24 -> 4:27 = #1 -// CHECK-START-NEXT: File [[START1]], 4:29 -> 5:1 = #1 -// CHECK-START: File [[START2:[0-9]]], 1:1 -> 5:1 = #0 -// CHECK-START-NEXT: File [[START2]], 4:17 -> 4:22 = (#0 + #5) -// CHECK-START-NEXT: File [[START2]], 4:24 -> 4:27 = #5 -// CHECK-START-NEXT: File [[START2]], 4:29 -> 5:1 = #5 -// CHECK-START: File [[START3:[0-9]]], 1:1 -> 5:1 = #0 -// CHECK-START-NEXT: File [[START3]], 4:17 -> 4:22 = (#0 + #9) -// CHECK-START-NEXT: File [[START3]], 4:24 -> 4:27 = #9 -// CHECK-START-NEXT: File [[START3]], 4:29 -> 5:1 = #9 +// CHECK-START: File [[START1:[0-9]]], 1:1 -> 5:1 = #0 +// CHECK-START: File [[START1]], 4:17 -> 4:22 = (#0 + #1) +// CHECK-START: File [[START1]], 4:24 -> 4:27 = #1 +// CHECK-START: File [[START1]], 4:29 -> 5:1 = #1 +// CHECK-START: File [[START2:[0-9]]], 1:1 -> 5:1 = #0 +// CHECK-START: File [[START2]], 4:17 -> 4:22 = (#0 + #5) +// CHECK-START: File [[START2]], 4:24 -> 4:27 = #5 +// CHECK-START: File [[START2]], 4:29 -> 5:1 = #5 +// CHECK-START: File [[START3:[0-9]]], 1:1 -> 5:1 = #0 +// CHECK-START: File [[START3]], 4:17 -> 4:22 = (#0 + #9) +// CHECK-START: File [[START3]], 4:24 -> 4:27 = #9 +// CHECK-START: File [[START3]], 4:29 -> 5:1 = #9 // CHECK-CODE: File [[CODE1:[0-9]]], 1:1 -> 14:1 = #1 // CHECK-CODE-NEXT: File [[CODE1]], 4:5 -> 4:11 = #1 -// CHECK-CODE-NEXT: File [[CODE1]], 4:13 -> 6:2 = #2 -// CHECK-CODE-NEXT: File [[CODE1]], 6:8 -> 8:2 = (#1 - #2) +// CHECK-CODE: File [[CODE1]], 4:13 -> 6:2 = #2 +// CHECK-CODE: File [[CODE1]], 6:8 -> 8:2 = (#1 - #2) // CHECK-CODE-NEXT: File [[CODE1]], 9:5 -> 9:9 = #1 -// CHECK-CODE-NEXT: File [[CODE1]], 9:11 -> 11:2 = #3 -// CHECK-CODE-NEXT: File [[CODE1]], 11:8 -> 13:2 = (#1 - #3) +// CHECK-CODE: File [[CODE1]], 9:11 -> 11:2 = #3 +// CHECK-CODE: File [[CODE1]], 11:8 -> 13:2 = (#1 - #3) // CHECK-CODE: File [[CODE2:[0-9]]], 1:1 -> 14:1 = #5 // CHECK-CODE-NEXT: File [[CODE2]], 4:5 -> 4:11 = #5 -// CHECK-CODE-NEXT: File [[CODE2]], 4:13 -> 6:2 = #6 -// CHECK-CODE-NEXT: File [[CODE2]], 6:8 -> 8:2 = (#5 - #6) +// CHECK-CODE: File [[CODE2]], 4:13 -> 6:2 = #6 +// CHECK-CODE: File [[CODE2]], 6:8 -> 8:2 = (#5 - #6) // CHECK-CODE-NEXT: File [[CODE2]], 9:5 -> 9:9 = #5 -// CHECK-CODE-NEXT: File [[CODE2]], 9:11 -> 11:2 = #7 -// CHECK-CODE-NEXT: File [[CODE2]], 11:8 -> 13:2 = (#5 - #7) +// CHECK-CODE: File [[CODE2]], 9:11 -> 11:2 = #7 +// CHECK-CODE: File [[CODE2]], 11:8 -> 13:2 = (#5 - #7) -// CHECK-END: File [[END1:[0-9]]], 1:1 -> 3:2 = #1 -// CHECK-END-NEXT: File [[END1]], 1:1 -> 6:1 = #0 -// CHECK-END-NEXT: File [[END1]], 5:5 -> 5:9 = #0 -// CHECK-END-NEXT: File [[END1]], 5:11 -> 5:16 = #4 -// CHECK-END: File [[END2:[0-9]]], 1:1 -> 3:2 = #5 -// CHECK-END-NEXT: File [[END2]], 1:1 -> 6:1 = #0 -// CHECK-END-NEXT: File [[END2]], 5:5 -> 5:9 = #0 -// CHECK-END-NEXT: File [[END2]], 5:11 -> 5:16 = #8 -// CHECK-END: File [[END3:[0-9]]], 1:1 -> 3:2 = #9 -// CHECK-END-NEXT: File [[END3]], 1:1 -> 6:1 = #0 -// CHECK-END-NEXT: File [[END3]], 5:5 -> 5:9 = #0 -// CHECK-END-NEXT: File [[END3]], 5:11 -> 5:16 = #10 +// CHECK-END: File [[END1:[0-9]]], 1:1 -> 3:2 = #1 +// CHECK-END: File [[END1]], 1:1 -> 6:1 = #0 +// CHECK-END: File [[END1]], 5:5 -> 5:9 = #0 +// CHECK-END: File [[END1]], 5:11 -> 5:16 = #4 +// CHECK-END: File [[END2:[0-9]]], 1:1 -> 3:2 = #5 +// CHECK-END: File [[END2]], 1:1 -> 6:1 = #0 +// CHECK-END: File [[END2]], 5:5 -> 5:9 = #0 +// CHECK-END: File [[END2]], 5:11 -> 5:16 = #8 +// CHECK-END: File [[END3:[0-9]]], 1:1 -> 3:2 = #9 +// CHECK-END: File [[END3]], 1:1 -> 6:1 = #0 +// CHECK-END: File [[END3]], 5:5 -> 5:9 = #0 +// CHECK-END: File [[END3]], 5:11 -> 5:16 = #10 diff --git a/test/CoverageMapping/label.cpp b/test/CoverageMapping/label.cpp index 1c5111a675a1..8cac5b0cbe76 100644 --- a/test/CoverageMapping/label.cpp +++ b/test/CoverageMapping/label.cpp @@ -4,29 +4,32 @@ void func() { // CHECK-NEXT: File 0, [[@LINE]]:13 -> {{[0-9]+}}:2 = #0 int i = 0; // CHECK-NEXT: File 0, [[@LINE+2]]:14 -> [[@LINE+2]]:20 = (#0 + #3) // CHECK-NEXT: File 0, [[@LINE+1]]:22 -> [[@LINE+1]]:25 = #3 - for(i = 0; i < 10; ++i) { // CHECK-NEXT: File 0, [[@LINE]]:27 -> [[@LINE+11]]:4 = #1 + for(i = 0; i < 10; ++i) { // CHECK: File 0, [[@LINE]]:27 -> [[@LINE+11]]:4 = #1 // CHECK-NEXT: File 0, [[@LINE+1]]:8 -> [[@LINE+1]]:13 = #1 - if(i < 5) { // CHECK-NEXT: File 0, [[@LINE]]:15 -> [[@LINE+6]]:6 = #2 + if(i < 5) { // CHECK: File 0, [[@LINE]]:15 -> [[@LINE+6]]:6 = #2 { x: // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE+4]]:6 = #3 int j = 1; } int m = 2; } else - goto x; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:13 = (#1 - #2) - int k = 3; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+1]]:4 = #3 - } - static int j = 0; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:2 = ((#0 + #3) - #1) + goto x; // CHECK: File 0, [[@LINE]]:7 -> [[@LINE]]:13 = (#1 - #2) + int k = 3; // CHECK-NEXT: File 0, [[@LINE-1]]:13 -> [[@LINE]]:5 = #3 + } // CHECK-NEXT: File 0, [[@LINE-1]]:5 -> [[@LINE]]:4 = #3 + static int j = 0; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:2 = ((#0 + #3) - #1) ++j; if(j == 1) // CHECK-NEXT: File 0, [[@LINE]]:6 -> [[@LINE]]:12 = ((#0 + #3) - #1) - goto x; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:11 = #4 + goto x; // CHECK: File 0, [[@LINE]]:5 -> [[@LINE]]:11 = #4 + // CHECK-NEXT: File 0, [[@LINE-1]]:11 -> [[@LINE+1]]:2 = (((#0 + #3) - #1) - #4) } // CHECK-NEXT: test1 void test1(int x) { // CHECK-NEXT: File 0, [[@LINE]]:19 -> {{[0-9]+}}:2 = #0 if(x == 0) // CHECK-NEXT: File 0, [[@LINE]]:6 -> [[@LINE]]:12 = #0 - goto a; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:11 = #1 - goto b; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE]]:9 = (#0 - #1) + goto a; // CHECK: File 0, [[@LINE]]:5 -> [[@LINE]]:11 = #1 + // CHECK-NEXT: File 0, [[@LINE-1]]:11 -> [[@LINE+1]]:3 = (#0 - #1) + goto b; // CHECK: Gap,File 0, [[@LINE]]:3 -> [[@LINE+5]]:2 = #3 + // CHECK-NEXT: Gap,File 0, [[@LINE-1]]:9 -> [[@LINE+1]]:1 = #2 a: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+3]]:2 = #2 b: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+2]]:2 = #3 x = x + 1; @@ -35,10 +38,12 @@ b: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+2]]:2 // CHECK-NEXT: test2 void test2(int x) { // CHECK-NEXT: File 0, [[@LINE]]:19 -> {{[0-9]+}}:2 = #0 if(x == 0) // CHECK-NEXT: File 0, [[@LINE]]:6 -> [[@LINE]]:12 = #0 - goto a; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:11 = #1 - // CHECK-NEXT: File 0, [[@LINE+2]]:8 -> [[@LINE+2]]:25 = (#0 - #1) + goto a; // CHECK: File 0, [[@LINE]]:5 -> [[@LINE]]:11 = #1 + // CHECK: Gap,File 0, [[@LINE-1]]:12 -> [[@LINE+3]]:8 = (#0 - #1) + // CHECK-NEXT: File 0, [[@LINE+2]]:8 -> [[@LINE+3]]:11 = (#0 - #1) // CHECK-NEXT: File 0, [[@LINE+1]]:11 -> [[@LINE+1]]:17 = (#0 - #1) - else if(x == 1) goto b; // CHECK-NEXT: File 0, [[@LINE]]:19 -> [[@LINE]]:25 = #2 + else if(x == 1) // CHECK: File 0, [[@LINE+1]]:5 -> [[@LINE+1]]:11 = #2 + goto b; // CHECK-NEXT: File 0, [[@LINE]]:11 -> [[@LINE+1]]:1 = #3 a: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+3]]:2 = #3 b: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+2]]:2 = #4 x = x + 1; @@ -47,11 +52,13 @@ b: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+2]]:2 // CHECK-NEXT: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int j = 0; - for(int i = 0; i < 10; ++i) { // CHECK: File 0, [[@LINE]]:31 -> [[@LINE+11]]:4 = #1 - a: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+10]]:4 = #2 + for(int i = 0; i < 10; ++i) { // CHECK: File 0, [[@LINE]]:31 -> [[@LINE+13]]:4 = #1 + a: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+12]]:4 = #2 if(i < 3) // CHECK-NEXT: File 0, [[@LINE]]:8 -> [[@LINE]]:13 = #2 - goto e; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:13 = #3 - goto c; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:11 = (#2 - #3) + goto e; // CHECK: File 0, [[@LINE]]:7 -> [[@LINE]]:13 = #3 + // CHECK-NEXT: File 0, [[@LINE-1]]:13 -> [[@LINE+1]]:5 = (#2 - #3) + goto c; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+8]]:4 = (#2 - #3) + // CHECK-NEXT: Gap,File 0, [[@LINE-1]]:11 -> [[@LINE+1]]:3 = #4 b: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:4 = #4 j = 2; c: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:4 = #5 diff --git a/test/CoverageMapping/logical.cpp b/test/CoverageMapping/logical.cpp index 198cc60d99b6..bc7c785b7b55 100644 --- a/test/CoverageMapping/logical.cpp +++ b/test/CoverageMapping/logical.cpp @@ -1,13 +1,18 @@ // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name logical.cpp %s | FileCheck %s -int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+10]]:2 = #0 +int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+15]]:2 = #0 bool bt = true; bool bf = false; - bool a = bt && bf; // CHECK-NEXT: File 0, [[@LINE]]:18 -> [[@LINE]]:20 = #1 - a = bt && + bool a = bt && bf; // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE]]:14 = #0 + // CHECK-NEXT: File 0, [[@LINE-1]]:18 -> [[@LINE-1]]:20 = #1 + + a = bt && // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:9 = #0 bf; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:9 = #2 - a = bf || bt; // CHECK-NEXT: File 0, [[@LINE]]:13 -> [[@LINE]]:15 = #3 - a = bf || + + a = bf || bt; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:9 = #0 + // CHECK-NEXT: File 0, [[@LINE-1]]:13 -> [[@LINE-1]]:15 = #3 + + a = bf || // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:9 = #0 bt; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:9 = #4 return 0; } diff --git a/test/CoverageMapping/loops.cpp b/test/CoverageMapping/loops.cpp index cb7d777f86b6..ff7aafd66d94 100644 --- a/test/CoverageMapping/loops.cpp +++ b/test/CoverageMapping/loops.cpp @@ -3,7 +3,7 @@ // CHECK: rangedFor void rangedFor() { // CHECK-NEXT: File 0, [[@LINE]]:18 -> {{[0-9]+}}:2 = #0 int arr[] = { 1, 2, 3, 4, 5 }; - int sum = 0; + int sum = 0; // CHECK: Gap,File 0, [[@LINE+1]]:20 -> [[@LINE+1]]:21 = #1 for(auto i : arr) { // CHECK: File 0, [[@LINE]]:21 -> [[@LINE+6]]:4 = #1 if (i == 3) continue; // CHECK: File 0, [[@LINE]]:7 -> [[@LINE]]:15 = #2 @@ -17,24 +17,27 @@ void rangedFor() { // CHECK-NEXT: File 0, [[@LINE]]:18 -> {{[0- } // CHECK: main: -int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+24]]:2 = #0 +int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> {{.*}}:2 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:24 = (#0 + #1) for(int i = 0; i < 10; ++i) // CHECK-NEXT: File 0, [[@LINE]]:26 -> [[@LINE]]:29 = #1 - ; // CHECK-NEXT: File 0, [[@LINE]]:6 -> [[@LINE]]:7 = #1 + ; // CHECK-NEXT: Gap,File 0, [[@LINE-1]]:30 -> [[@LINE]]:6 = #1 + // CHECK-NEXT: File 0, [[@LINE-1]]:6 -> [[@LINE-1]]:7 = #1 for(int i = 0; i < 10; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:13 = (#0 + #2) ++i) // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:10 = #2 - { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:4 = #2 - int x = 0; + { // CHECK-NEXT: Gap,File 0, [[@LINE-1]]:11 -> [[@LINE]]:3 = #2 + int x = 0; // CHECK-NEXT: File 0, [[@LINE-1]]:3 -> [[@LINE+1]]:4 = #2 } int j = 0; // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:14 = (#0 + #3) - while(j < 5) ++j; // CHECK-NEXT: File 0, [[@LINE]]:16 -> [[@LINE]]:19 = #3 + while(j < 5) ++j; // CHECK-NEXT: Gap,File 0, [[@LINE]]:15 -> [[@LINE]]:16 = #3 + // CHECK-NEXT: File 0, [[@LINE-1]]:16 -> [[@LINE-1]]:19 = #3 + do { // CHECK-NEXT: File 0, [[@LINE]]:6 -> [[@LINE+2]]:4 = (#0 + #4) ++j; } while(j < 10); // CHECK-NEXT: File 0, [[@LINE]]:11 -> [[@LINE]]:17 = (#0 + #4) j = 0; - while - (j < 5) // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:10 = (#0 + #5) + while // CHECK-NEXT: File 0, [[@LINE+1]]:5 -> [[@LINE+1]]:10 = (#0 + #5) + (j < 5) // CHECK-NEXT: Gap,File 0, [[@LINE]]:11 -> [[@LINE+1]]:6 = #5 ++j; // CHECK-NEXT: File 0, [[@LINE]]:6 -> [[@LINE]]:9 = #5 do ++j; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:8 = (#0 + #6) diff --git a/test/CoverageMapping/macro-expansion.c b/test/CoverageMapping/macro-expansion.c index 3fca97584aa8..1e4a28b32d88 100644 --- a/test/CoverageMapping/macro-expansion.c +++ b/test/CoverageMapping/macro-expansion.c @@ -4,18 +4,18 @@ // CHECK: File 1, [[@LINE+5]]:12 -> [[@LINE+5]]:38 = #0 // CHECK-NEXT: File 1, [[@LINE+4]]:15 -> [[@LINE+4]]:28 = (#0 + #2) // CHECK-NEXT: File 1, [[@LINE+3]]:21 -> [[@LINE+3]]:22 = (#0 + #2) -// CHECK-NEXT: File 1, [[@LINE+2]]:24 -> [[@LINE+2]]:26 = #3 +// CHECK: File 1, [[@LINE+2]]:24 -> [[@LINE+2]]:26 = #3 // CHECK-NEXT: File 1, [[@LINE+1]]:36 -> [[@LINE+1]]:37 = (#0 + #2) #define M1 do { if (0) {} } while (0) // CHECK-NEXT: File 2, [[@LINE+10]]:15 -> [[@LINE+10]]:41 = #0 // CHECK-NEXT: File 2, [[@LINE+9]]:18 -> [[@LINE+9]]:31 = (#0 + #4) // CHECK-NEXT: File 2, [[@LINE+8]]:24 -> [[@LINE+8]]:25 = (#0 + #4) -// CHECK-NEXT: File 2, [[@LINE+7]]:27 -> [[@LINE+7]]:29 = #5 +// CHECK: File 2, [[@LINE+7]]:27 -> [[@LINE+7]]:29 = #5 // CHECK-NEXT: File 2, [[@LINE+6]]:39 -> [[@LINE+6]]:40 = (#0 + #4) // CHECK-NEXT: File 3, [[@LINE+5]]:15 -> [[@LINE+5]]:41 = #0 // CHECK-NEXT: File 3, [[@LINE+4]]:18 -> [[@LINE+4]]:31 = (#0 + #6) // CHECK-NEXT: File 3, [[@LINE+3]]:24 -> [[@LINE+3]]:25 = (#0 + #6) -// CHECK-NEXT: File 3, [[@LINE+2]]:27 -> [[@LINE+2]]:29 = #7 +// CHECK: File 3, [[@LINE+2]]:27 -> [[@LINE+2]]:29 = #7 // CHECK-NEXT: File 3, [[@LINE+1]]:39 -> [[@LINE+1]]:40 = (#0 + #6) #define M2(x) do { if (x) {} } while (0) // CHECK-NEXT: File 4, [[@LINE+4]]:15 -> [[@LINE+4]]:38 = #0 @@ -23,10 +23,12 @@ // CHECK-NEXT: Expansion,File 4, [[@LINE+2]]:20 -> [[@LINE+2]]:22 = (#0 + #8) // CHECK-NEXT: File 4, [[@LINE+1]]:36 -> [[@LINE+1]]:37 = (#0 + #8) #define M3(x) do { M2(x); } while (0) -// CHECK-NEXT: File 5, [[@LINE+2]]:15 -> [[@LINE+2]]:27 = #0 +// CHECK-NEXT: File 5, [[@LINE+3]]:15 -> [[@LINE+3]]:27 = #0 +// CHECK-NEXT: File 5, [[@LINE+2]]:16 -> [[@LINE+2]]:19 = #0 // CHECK-NEXT: File 5, [[@LINE+1]]:23 -> [[@LINE+1]]:26 = #12 #define M4(x) ((x) && (x)) -// CHECK-NEXT: File 6, [[@LINE+2]]:15 -> [[@LINE+2]]:27 = #0 +// CHECK-NEXT: File 6, [[@LINE+3]]:15 -> [[@LINE+3]]:27 = #0 +// CHECK-NEXT: File 6, [[@LINE+2]]:16 -> [[@LINE+2]]:19 = #0 // CHECK-NEXT: File 6, [[@LINE+1]]:23 -> [[@LINE+1]]:26 = #14 #define M5(x) ((x) || (x)) // CHECK-NEXT: File 7, [[@LINE+1]]:15 -> [[@LINE+1]]:26 = #0 @@ -38,7 +40,7 @@ // CHECK-NEXT: File 9, {{[0-9]+}}:15 -> {{[0-9]+}}:41 = (#0 + #8) // CHECK-NEXT: File 9, {{[0-9]+}}:18 -> {{[0-9]+}}:31 = ((#0 + #8) + #9) // CHECK-NEXT: File 9, {{[0-9]+}}:24 -> {{[0-9]+}}:25 = ((#0 + #8) + #9) -// CHECK-NEXT: File 9, {{[0-9]+}}:27 -> {{[0-9]+}}:29 = #10 +// CHECK: File 9, {{[0-9]+}}:27 -> {{[0-9]+}}:29 = #10 // CHECK-NEXT: File 9, {{[0-9]+}}:39 -> {{[0-9]+}}:40 = ((#0 + #8) + #9) void func(int x) { diff --git a/test/CoverageMapping/macro-expressions.cpp b/test/CoverageMapping/macro-expressions.cpp index 3eba86949a76..26d70c67fca0 100644 --- a/test/CoverageMapping/macro-expressions.cpp +++ b/test/CoverageMapping/macro-expressions.cpp @@ -54,19 +54,19 @@ void STMT(fn3)() { // CHECK-NEXT: File 0, [[@LINE+1]]:17 -> {{[0-9]+}}:2 = #0 void foo(int i) { // CHECK-NEXT: File 0, [[@LINE+2]]:7 -> [[@LINE+2]]:8 = #0 - // CHECK-NEXT: File 0, [[@LINE+1]]:10 -> [[@LINE+1]]:12 = #1 + // CHECK: File 0, [[@LINE+1]]:10 -> [[@LINE+1]]:12 = #1 if (0) {} // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:7 -> [[@LINE+2]]:11 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:16 -> [[@LINE+1]]:18 = #2 if (EXPR(i)) {} // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:9 -> [[@LINE+2]]:14 = (#0 + #3) - // CHECK-NEXT: File 0, [[@LINE+1]]:20 -> [[@LINE+1]]:22 = #3 + // CHECK: File 0, [[@LINE+1]]:20 -> [[@LINE+1]]:22 = #3 for (;NEXPR(i);) {} // CHECK-NEXT: Expansion,File 0, [[@LINE+4]]:8 -> [[@LINE+4]]:14 = #0 // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:33 -> [[@LINE+3]]:35 = (#0 + #4) // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:43 -> [[@LINE+2]]:46 = #4 - // CHECK-NEXT: File 0, [[@LINE+1]]:51 -> [[@LINE+1]]:53 = #4 + // CHECK: File 0, [[@LINE+1]]:51 -> [[@LINE+1]]:53 = #4 for (ASSIGN(DECL(int, j), 0); LT(j, i); INC(j)) {} // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:9 = #0 ASSIGN(DECL(int, k), 0); @@ -79,17 +79,17 @@ void foo(int i) { do {} while (NEXPR(i)); // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:8 -> [[@LINE+3]]:12 = #0 // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:23 -> [[@LINE+2]]:26 = #0 - // CHECK-NEXT: File 0, [[@LINE+1]]:42 -> [[@LINE+1]]:44 = #7 + // CHECK: File 0, [[@LINE+1]]:42 -> [[@LINE+1]]:44 = #7 for (DECL(int, j) : ARR(int, 1, 2, 3)) {} // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:14 -> [[@LINE+2]]:20 = #0 // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:23 -> [[@LINE+1]]:29 = #0 (void)(i ? PRIo64 : PRIu64); - // CHECK-NEXT: File 0, [[@LINE+5]]:14 -> [[@LINE+5]]:15 = #9 + // CHECK: File 0, [[@LINE+5]]:14 -> [[@LINE+5]]:15 = #9 // CHECK-NEXT: Expansion,File 0, [[@LINE+4]]:18 -> [[@LINE+4]]:22 = (#0 - #9) // CHECK-NEXT: File 0, [[@LINE+3]]:22 -> [[@LINE+3]]:33 = (#0 - #9) - // CHECK-NEXT: File 0, [[@LINE+2]]:28 -> [[@LINE+2]]:29 = #10 + // CHECK: File 0, [[@LINE+2]]:28 -> [[@LINE+2]]:29 = #10 // CHECK-NEXT: File 0, [[@LINE+1]]:32 -> [[@LINE+1]]:33 = ((#0 - #9) - #10) (void)(i ? i : EXPR(i) ? i : 0); // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:15 -> [[@LINE+3]]:19 = (#0 - #11) diff --git a/test/CoverageMapping/macros.c b/test/CoverageMapping/macros.c index 60164be91d7c..95fe37ed7e8d 100644 --- a/test/CoverageMapping/macros.c +++ b/test/CoverageMapping/macros.c @@ -40,7 +40,7 @@ void func3() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+3]]:2 = #0 void func4() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+6]]:2 = #0 int i = 0; while (i++ < 10) // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE]]:18 = (#0 + #1) - if (i < 5) // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+2]]:14 = #1 + if (i < 5) // CHECK: File 0, [[@LINE]]:5 -> [[@LINE+2]]:14 = #1 // CHECK-NEXT: File 0, [[@LINE-1]]:9 -> [[@LINE-1]]:14 = #1 MACRO_2; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:7 -> [[@LINE]]:14 = #2 } diff --git a/test/CoverageMapping/macroscopes.cpp b/test/CoverageMapping/macroscopes.cpp index f5fd55c73177..3f5f65e5ad7b 100644 --- a/test/CoverageMapping/macroscopes.cpp +++ b/test/CoverageMapping/macroscopes.cpp @@ -89,10 +89,10 @@ int main() { // CHECK-NEXT: File 1, 3:52 -> 3:53 = #1 // CHECK-NEXT: File 2, 10:3 -> 20:4 = #1 // CHECK-NEXT: File 2, 11:7 -> 11:13 = #1 -// CHECK-NEXT: File 2, 11:15 -> 13:4 = #2 +// CHECK: File 2, 11:15 -> 13:4 = #2 // CHECK-NEXT: File 2, 13:10 -> 15:4 = (#1 - #2) // CHECK-NEXT: File 2, 16:7 -> 16:11 = #1 -// CHECK-NEXT: File 2, 16:13 -> 18:4 = #3 +// CHECK: File 2, 16:13 -> 18:4 = #3 // CHECK-NEXT: File 2, 18:10 -> 20:4 = (#1 - #3) // CHECK-NEXT: File 3, 6:3 -> 7:4 = #1 // CHECK-NEXT: File 4, 3:24 -> 3:53 = #0 @@ -101,10 +101,10 @@ int main() { // CHECK-NEXT: File 4, 3:52 -> 3:53 = #4 // CHECK-NEXT: File 5, 10:3 -> 20:4 = #4 // CHECK-NEXT: File 5, 11:7 -> 11:13 = #4 -// CHECK-NEXT: File 5, 11:15 -> 13:4 = #5 +// CHECK: File 5, 11:15 -> 13:4 = #5 // CHECK-NEXT: File 5, 13:10 -> 15:4 = (#4 - #5) // CHECK-NEXT: File 5, 16:7 -> 16:11 = #4 -// CHECK-NEXT: File 5, 16:13 -> 18:4 = #6 +// CHECK: File 5, 16:13 -> 18:4 = #6 // CHECK-NEXT: File 5, 18:10 -> 20:4 = (#4 - #6) // CHECK-NEXT: File 6, 6:3 -> 7:4 = #4 // CHECK-NEXT: File 7, 3:24 -> 3:53 = #0 diff --git a/test/CoverageMapping/md.cpp b/test/CoverageMapping/md.cpp index 20c696c7dfbb..5f2b2d61224f 100644 --- a/test/CoverageMapping/md.cpp +++ b/test/CoverageMapping/md.cpp @@ -27,6 +27,17 @@ void foo(MD i) { #include "Inputs/md.def" } +// CHECK: bar +// CHECK-NEXT: File 0, [[@LINE+3]]:12 -> [[@LINE+8]]:2 = #0 +bool isVal1(); +bool isVal2(); +bool bar() { + #define HANDLE_MD(X) is##X() || + return +#include "Inputs/md.def" + 0; +} + int main(int argc, const char *argv[]) { foo(MD::Val1); return 0; diff --git a/test/CoverageMapping/moremacros.c b/test/CoverageMapping/moremacros.c index 56662270d073..88411f3ba916 100644 --- a/test/CoverageMapping/moremacros.c +++ b/test/CoverageMapping/moremacros.c @@ -7,7 +7,7 @@ // CHECK-NEXT: File 0, [[@LINE+1]]:40 -> {{[0-9]+}}:2 = #0 int main(int argc, const char *argv[]) { // CHECK-NEXT: File 0, [[@LINE+1]]:7 -> [[@LINE+1]]:12 = #0 - if (!argc) {} // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE]]:16 = #1 + if (!argc) {} // CHECK: File 0, [[@LINE]]:14 -> [[@LINE]]:16 = #1 // CHECK-NEXT: File 0, [[@LINE+3]]:7 -> [[@LINE+3]]:12 = #0 // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:14 -> [[@LINE+2]]:19 = #2 @@ -15,7 +15,7 @@ int main(int argc, const char *argv[]) { if (!argc) LBRAC return 0; // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:8 = #2 - RBRAC + RBRAC // CHECK-NEXT: [[@LINE]]:8 -> [[@LINE+6]]:3 = (#0 - #2) // CHECK-NEXT: File 0, [[@LINE+4]]:3 -> [[@LINE+15]]:2 = (#0 - #2) // CHECK-NEXT: File 0, [[@LINE+3]]:7 -> [[@LINE+3]]:12 = (#0 - #2) @@ -23,15 +23,15 @@ int main(int argc, const char *argv[]) { // CHECK-NEXT: File 0, [[@LINE+1]]:19 -> [[@LINE+3]]:4 = #3 if (!argc) LBRAC return 0; - } + } // CHECK-NEXT: [[@LINE]]:4 -> [[@LINE+5]]:3 = ((#0 - #2) - #3) // CHECK-NEXT: File 0, [[@LINE+3]]:3 -> [[@LINE+7]]:2 = ((#0 - #2) - #3) // CHECK-NEXT: File 0, [[@LINE+2]]:7 -> [[@LINE+2]]:12 = ((#0 - #2) - #3) - // CHECK-NEXT: File 0, [[@LINE+1]]:14 -> [[@LINE+4]]:8 = #4 + // CHECK: File 0, [[@LINE+1]]:14 -> [[@LINE+4]]:8 = #4 if (!argc) { return 0; // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:8 = #4 - RBRAC + RBRAC // CHECK-NEXT: [[@LINE]]:8 -> [[@LINE+1]]:2 = (((#0 - #2) - #3) - #4) } // CHECK-NEXT: File 1, 3:15 -> 3:16 = #2 diff --git a/test/CoverageMapping/objc.m b/test/CoverageMapping/objc.m index 55c7545370cc..4e4c184f0a88 100644 --- a/test/CoverageMapping/objc.m +++ b/test/CoverageMapping/objc.m @@ -7,7 +7,7 @@ // CHECK: func void func(A *a) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+3]]:2 = #0 if (a) // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:8 = #0 - [a bork: 20 ]; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:20 = #1 + [a bork: 20 ]; // CHECK: File 0, [[@LINE]]:5 -> [[@LINE]]:20 = #1 } @interface NSArray @@ -17,12 +17,12 @@ void func(A *a) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+3]]:2 = #0 // CHECK: func2 void func2(NSArray *array) { // CHECK-NEXT: File 0, [[@LINE]]:28 -> {{[0-9]+}}:2 = #0 - int i = 0; + int i = 0; // CHECK-NEXT: Gap,File 0, [[@LINE+1]]:28 -> [[@LINE+1]]:29 = #1 for (NSArray *x in array) { // CHECK-NEXT: File 0, [[@LINE]]:29 -> [[@LINE+7]]:4 = #1 // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:10 = #1 - if (x) { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+2]]:6 = #2 + if (x) { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+2]]:6 = #2 i = 1; - } else { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+2]]:6 = (#1 - #2) + } else { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+2]]:6 = (#1 - #2) i = -1; } } diff --git a/test/CoverageMapping/preprocessor.c b/test/CoverageMapping/preprocessor.c index bd82b3939ed5..b3ebc7bd4ec0 100644 --- a/test/CoverageMapping/preprocessor.c +++ b/test/CoverageMapping/preprocessor.c @@ -3,36 +3,69 @@ // CHECK: func void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+5]]:2 = #0 int i = 0; -#ifdef MACRO // CHECK-NEXT: Skipped,File 0, [[@LINE]]:2 -> [[@LINE+2]]:2 = 0 +#ifdef MACRO // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+3]]:1 = 0 int x = i; #endif } -#if 0 - int g = 0; - - void bar() { } -#endif - // CHECK: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int i = 0; -#if 0 // CHECK-NEXT: Skipped,File 0, [[@LINE]]:2 -> [[@LINE+4]]:2 = 0 +# if 0 // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+5]]:1 = 0 if(i == 0) { i = 1; } -#endif +# endif // Mark me skipped! #if 1 // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:12 = #0 - if(i == 0) { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+2]]:4 = #1 + if(i == 0) { // CHECK: File 0, [[@LINE]]:14 -> [[@LINE+2]]:4 = #1 i = 1; } -#else // CHECK-NEXT: Skipped,File 0, [[@LINE]]:2 -> [[@LINE+5]]:2 = 0 +#else // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+6]]:1 = 0 if(i == 1) { i = 0; } } #endif + + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+5]]:1 +#\ + if 0 +#\ + endif // also skipped + +#if 1 + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+4]]:1 +#\ + elif 0 +#endif + +#if 1 + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+4]]:1 +#\ + else +#endif + + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+5]]:1 +#\ + ifdef NOT_DEFINED +#\ + endif + + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+5]]:1 +#\ + ifndef __FILE__ +#\ + endif + + // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+7]]:1 +#\ + ifdef NOT_DEFINED +#\ + \ + \ + endif // also skipped + return 0; } diff --git a/test/CoverageMapping/return.c b/test/CoverageMapping/return.c index 1b190b0eb733..440acb569b8f 100644 --- a/test/CoverageMapping/return.c +++ b/test/CoverageMapping/return.c @@ -10,15 +10,15 @@ void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+3]]:2 void func2() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> {{[0-9]+}}:2 = #0 // CHECK-NEXT: File 0, [[@LINE+2]]:18 -> [[@LINE+2]]:24 = ((#0 + #1) - #2) // CHECK-NEXT: File 0, [[@LINE+1]]:26 -> [[@LINE+1]]:29 = (#1 - #2) - for(int i = 0; i < 10; ++i) { // CHECK-NEXT: File 0, [[@LINE]]:31 -> {{[0-9]+}}:4 = #1 + for(int i = 0; i < 10; ++i) { // CHECK: File 0, [[@LINE]]:31 -> {{[0-9]+}}:4 = #1 // CHECK-NEXT: File 0, [[@LINE+1]]:8 -> [[@LINE+1]]:13 = #1 - if(i > 2) { // CHECK-NEXT: File 0, [[@LINE]]:15 -> [[@LINE+2]]:6 = #2 - return; + if(i > 2) { // CHECK: File 0, [[@LINE]]:15 -> [[@LINE+2]]:6 = #2 + return; // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+3]]:5 = (#1 - #2) } // CHECK-NEXT: File 0, [[@LINE+2]]:5 -> {{[0-9]+}}:4 = (#1 - #2) // CHECK-NEXT: File 0, [[@LINE+1]]:8 -> [[@LINE+1]]:14 = (#1 - #2) - if(i == 3) { // CHECK-NEXT: File 0, [[@LINE]]:16 -> [[@LINE+2]]:6 = #3 + if(i == 3) { // CHECK: File 0, [[@LINE]]:16 -> [[@LINE+2]]:6 = #3 int j = 1; - } else { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+2]]:6 = ((#1 - #2) - #3) + } else { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+2]]:6 = ((#1 - #2) - #3) int j = 2; } } @@ -27,9 +27,9 @@ void func2() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> {{[0-9]+} // CHECK-NEXT: func3 void func3(int x) { // CHECK-NEXT: File 0, [[@LINE]]:19 -> {{[0-9]+}}:2 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:11 = #0 - if(x > 5) { // CHECK-NEXT: File 0, [[@LINE]]:13 -> [[@LINE+6]]:4 = #1 + if(x > 5) { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+6]]:4 = #1 while(x >= 9) { // CHECK-NEXT: File 0, [[@LINE]]:11 -> [[@LINE]]:17 = #1 - return; // CHECK-NEXT: File 0, [[@LINE-1]]:19 -> [[@LINE+2]]:6 = #2 + return; // CHECK: File 0, [[@LINE-1]]:19 -> [[@LINE+2]]:6 = #2 --x; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE+1]]:6 = 0 } int i = 0; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+1]]:4 = (#1 - #2) diff --git a/test/CoverageMapping/switch.cpp b/test/CoverageMapping/switch.cpp index 312f26ca16e4..30c64922201f 100644 --- a/test/CoverageMapping/switch.cpp +++ b/test/CoverageMapping/switch.cpp @@ -3,10 +3,10 @@ // CHECK: foo void foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+8]]:2 = #0 switch(i) { - case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = #2 + case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:11 = #2 return; case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3 - break; + break; // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE+2]]:3 = #1 } int x = 0; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 = #1 } @@ -38,7 +38,7 @@ void bar(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+20]]:2 = #0 // CHECK: baz void baz() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+5]]:2 = #0 - switch (int i = true ? nop() // CHECK-NEXT: [[@LINE]]:26 -> [[@LINE]]:31 = #2 + switch (int i = true ? nop() // CHECK: [[@LINE]]:26 -> [[@LINE]]:31 = #2 : nop(); // CHECK-NEXT: [[@LINE]]:26 -> [[@LINE]]:31 = (#0 - #2) i) {} nop(); // CHECK-NEXT: [[@LINE]]:3 -> [[@LINE+1]]:2 = #1 @@ -48,23 +48,23 @@ void baz() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+5]]:2 = #0 int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+35]]:2 = #0 int i = 0; switch(i) { - case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:10 = #2 + case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #2 i = 1; break; case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #3 i = 2; break; default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #4 - break; + break; // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE+2]]:3 = #1 } switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+23]]:2 = #1 - case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:10 = #6 + case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #6 i = 1; break; case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = #7 i = 2; default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = (#7 + #8) - break; + break; // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE+3]]:3 = #5 } switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+13]]:2 = #5 @@ -81,3 +81,32 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+35]]:2 = #0 baz(); return 0; } + +// FIXME: End location for "case 1" shouldn't point at the end of the switch. + // CHECK: fallthrough +int fallthrough(int i) { // CHECK-NEXT: File 0, [[@LINE]]:24 -> [[@LINE+12]]:2 = #0 + switch(i) { + case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+8]]:10 = #2 + i = 23; + case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = (#2 + #3) + i = 11; + break; + case 3: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = #4 + case 4: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = (#4 + #5) + i = 99; + break; + } +} + +void abort(void) __attribute((noreturn)); + // CHECK: noret +int noret(int x) { // CHECK-NEXT: File 0, [[@LINE]]:18 -> [[@LINE+9]]:2 + switch (x) { + default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:12 + abort(); + case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:13 + return 5; + case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:14 + return 10; + } +} diff --git a/test/CoverageMapping/switchmacro.c b/test/CoverageMapping/switchmacro.c index 55f93d8f60c0..f4c14f798f0b 100644 --- a/test/CoverageMapping/switchmacro.c +++ b/test/CoverageMapping/switchmacro.c @@ -7,12 +7,13 @@ int foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:16 -> {{[0-9]+}}:2 = #0 switch (i) { default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> {{[0-9]+}}:11 = #2 if (i == 1) // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:15 = #2 - return 0; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:15 = #3 + return 0; // CHECK: File 0, [[@LINE]]:7 -> [[@LINE]]:15 = #3 + // CHECK-NEXT: File 0, [[@LINE-1]]:15 -> [[@LINE+3]]:5 = (#2 - #3) // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:5 -> [[@LINE+2]]:8 = (#2 - #3) (Expanded file = 1) // CHECK-NEXT: File 0, [[@LINE+1]]:8 -> {{[0-9]+}}:11 = (#2 - #3) FOO(1); case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:13 = ((#2 + #4) - #3) - return 2; + return 2; // CHECK-NEXT: Gap,File 0, [[@LINE]]:13 -> [[@LINE+6]]:3 = #5 // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:3 -> [[@LINE+2]]:6 = 0 // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> {{[0-9]+}}:11 = 0 diff --git a/test/CoverageMapping/test.c b/test/CoverageMapping/test.c index 5affbaadfd1d..ae73fcb3bbab 100644 --- a/test/CoverageMapping/test.c +++ b/test/CoverageMapping/test.c @@ -7,7 +7,7 @@ static void static_func(); int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+7]]:2 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:24 = (#0 + #1) for(int i = 0; i < 10; ++i) { // CHECK-NEXT: File 0, [[@LINE]]:26 -> [[@LINE]]:29 = #1 - bar(); // CHECK-NEXT: File 0, [[@LINE-1]]:31 -> [[@LINE+1]]:4 = #1 + bar(); // CHECK: File 0, [[@LINE-1]]:31 -> [[@LINE+1]]:4 = #1 } static_func(); return 0; @@ -16,7 +16,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+ // CHECK-NEXT: foo void foo() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+5]]:2 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:7 = #0 - if(1) { // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE+2]]:4 = #1 + if(1) { // CHECK: File 0, [[@LINE]]:9 -> [[@LINE+2]]:4 = #1 int i = 0; } } diff --git a/test/CoverageMapping/trycatch.cpp b/test/CoverageMapping/trycatch.cpp index 01d8fb930740..560354320912 100644 --- a/test/CoverageMapping/trycatch.cpp +++ b/test/CoverageMapping/trycatch.cpp @@ -12,13 +12,13 @@ class Warning { // CHECK: func void func(int i) { // CHECK-NEXT: File 0, [[@LINE]]:18 -> {{[0-9]+}}:2 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:11 = #0 - if(i % 2) { // CHECK-NEXT: File 0, [[@LINE]]:13 -> [[@LINE+4]]:4 = #1 + if(i % 2) { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+4]]:4 = #1 throw Error(); int j = 0; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+2]]:4 = 0 - // CHECK-NEXT: File 0, [[@LINE+1]]:10 -> [[@LINE+2]]:27 = (#0 - #1) + // CHECK: File 0, [[@LINE+1]]:10 -> [[@LINE+2]]:27 = (#0 - #1) } else if(i == 8) // CHECK-NEXT: File 0, [[@LINE]]:13 -> [[@LINE]]:19 = (#0 - #1) - throw ImportantError(); // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:27 = #2 -} + throw ImportantError(); // CHECK: File 0, [[@LINE]]:5 -> [[@LINE]]:27 = #2 +} // CHECK-NEXT: File 0, [[@LINE-1]]:27 -> [[@LINE]]:2 = ((#0 - #1) - #2) // CHECK-NEXT: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+13]]:2 = #0 diff --git a/test/CoverageMapping/while.c b/test/CoverageMapping/while.c index 7f09e4b0d727..616ecf69020d 100644 --- a/test/CoverageMapping/while.c +++ b/test/CoverageMapping/while.c @@ -3,10 +3,10 @@ // CHECK: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+8]]:2 = #0 int j = 0; // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:14 = (#0 + #1) - while(j < 5) ++j; // CHECK-NEXT: File 0, [[@LINE]]:16 -> [[@LINE]]:19 = #1 - j = 0; - while - (j < 5) // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:10 = (#0 + #2) + while(j < 5) ++j; // CHECK-NEXT: File 0, [[@LINE]]:15 -> [[@LINE]]:16 = #1 + j = 0; // CHECK-NEXT: File 0, [[@LINE-1]]:16 -> [[@LINE-1]]:19 = #1 + while // CHECK-NEXT: File 0, [[@LINE+1]]:5 -> [[@LINE+1]]:10 = (#0 + #2) + (j < 5) // CHECK-NEXT: Gap,File 0, [[@LINE]]:11 -> [[@LINE+1]]:6 = #2 ++j; // CHECK-NEXT: File 0, [[@LINE]]:6 -> [[@LINE]]:9 = #2 return 0; } |