diff options
Diffstat (limited to 'test/CoverageMapping')
-rw-r--r-- | test/CoverageMapping/abspath.cpp | 15 | ||||
-rw-r--r-- | test/CoverageMapping/if.cpp (renamed from test/CoverageMapping/if.c) | 13 | ||||
-rw-r--r-- | test/CoverageMapping/macroception.c | 6 | ||||
-rw-r--r-- | test/CoverageMapping/macros.c | 23 | ||||
-rw-r--r-- | test/CoverageMapping/switch.cpp (renamed from test/CoverageMapping/switch.c) | 40 | ||||
-rw-r--r-- | test/CoverageMapping/switchmacro.c | 2 |
6 files changed, 75 insertions, 24 deletions
diff --git a/test/CoverageMapping/abspath.cpp b/test/CoverageMapping/abspath.cpp new file mode 100644 index 0000000000000..667172e32cf4c --- /dev/null +++ b/test/CoverageMapping/abspath.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -main-file-name abspath.cpp %S/Inputs/../abspath.cpp -o - | FileCheck -check-prefix=RMDOTS %s + +// RMDOTS: @__llvm_coverage_mapping = {{.*}}"\01 +// RMDOTS-NOT: Inputs +// RMDOTS: " + +// RUN: cd %T && mkdir -p test && cd 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 + +// RELPATH: @__llvm_coverage_mapping = {{.*}}"\01 +// RELPATH: {{[/\\]}}{{.*}}{{[/\\][^/\\]*}}test{{[/\\][^/\\]*}}f1.c +// RELPATH: " + +void f1() {} diff --git a/test/CoverageMapping/if.c b/test/CoverageMapping/if.cpp index 69544f68cfe23..95e6d8abe63e3 100644 --- a/test/CoverageMapping/if.c +++ b/test/CoverageMapping/if.cpp @@ -1,5 +1,16 @@ -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name if.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++1z -triple %itanium_abi_triple -main-file-name if.cpp %s | FileCheck %s +int nop() { return 0; } + +// CHECK-LABEL: _Z3foov: +void foo() { // CHECK-NEXT: [[@LINE]]:12 -> [[@LINE+5]]:2 = #0 + 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 +} + +// 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 diff --git a/test/CoverageMapping/macroception.c b/test/CoverageMapping/macroception.c index 7848741641873..7c142ef5afdee 100644 --- a/test/CoverageMapping/macroception.c +++ b/test/CoverageMapping/macroception.c @@ -11,7 +11,6 @@ int main() M1 return 0; } -// CHECK-NEXT: File 1, 4:12 -> 4:14 = #0 // CHECK-NEXT: Expansion,File 1, 4:12 -> 4:14 = #0 // CHECK-NEXT: File 2, 3:12 -> 3:13 = #0 @@ -21,7 +20,6 @@ int main() M1 void func2() { int x = 0; M11 -// CHECK-NEXT: File 1, 6:13 -> 6:16 = #0 // CHECK-NEXT: Expansion,File 1, 6:13 -> 6:16 = #0 // CHECK-NEXT: File 2, 5:13 -> 5:14 = #0 @@ -32,9 +30,7 @@ M11 void func3() M1 int x = 0; M11 -// CHECK-NEXT: File 1, 4:12 -> 4:14 = #0 // CHECK-NEXT: Expansion,File 1, 4:12 -> 4:14 = #0 -// CHECK-NEXT: File 2, 6:13 -> 6:16 = #0 // CHECK-NEXT: Expansion,File 2, 6:13 -> 6:16 = #0 // CHECK-NEXT: File 3, 3:12 -> 3:13 = #0 // CHECK-NEXT: File 4, 5:13 -> 5:14 = #0 @@ -44,9 +40,7 @@ M11 // CHECK-NEXT: File 0, [[@LINE+2]]:16 -> [[@LINE+2]]:20 = #0 // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:17 -> [[@LINE+1]]:20 = #0 void func4() M1 M11 -// CHECK-NEXT: File 1, 4:12 -> 4:14 = #0 // CHECK-NEXT: Expansion,File 1, 4:12 -> 4:14 = #0 -// CHECK-NEXT: File 2, 6:13 -> 6:16 = #0 // CHECK-NEXT: Expansion,File 2, 6:13 -> 6:16 = #0 // CHECK-NEXT: File 3, 3:12 -> 3:13 = #0 // CHECK-NEXT: File 4, 5:13 -> 5:14 = #0 diff --git a/test/CoverageMapping/macros.c b/test/CoverageMapping/macros.c index f6339614397b6..60164be91d7cb 100644 --- a/test/CoverageMapping/macros.c +++ b/test/CoverageMapping/macros.c @@ -3,6 +3,7 @@ #define MACRO return; bar() #define MACRO_2 bar() #define MACRO_1 return; MACRO_2 +#define MACRO_3 MACRO_2 void bar() {} @@ -24,7 +25,6 @@ void func2() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+5]]:2 = #0 i = 2; } // CHECK-NEXT: File 1, 5:17 -> 5:32 = #0 -// CHECK-NEXT: File 1, 5:25 -> 5:32 = 0 // CHECK-NEXT: Expansion,File 1, 5:25 -> 5:32 = 0 // CHECK-NEXT: File 2, 4:17 -> 4:22 = 0 @@ -36,8 +36,29 @@ void func3() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+3]]:2 = #0 // CHECK-NEXT: File 1, 4:17 -> 4:22 = #0 // CHECK-NEXT: File 2, 4:17 -> 4:22 = #0 +// CHECK-NEXT: func4 +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 + // CHECK-NEXT: File 0, [[@LINE-1]]:9 -> [[@LINE-1]]:14 = #1 + MACRO_2; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:7 -> [[@LINE]]:14 = #2 +} +// CHECK-NEXT: File 1, 4:17 -> 4:22 = #2 +// CHECK-NOT: File 1 + +// CHECK-NEXT: func5 +void func5() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+4]]:2 = #0 + int i = 0; + if (i > 5) // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:12 = #0 + MACRO_3; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:5 -> [[@LINE]]:12 = #1 +} +// CHECK-NEXT: Expansion,File 1, 6:17 -> 6:24 = #1 +// CHECK-NEXT: File 2, 4:17 -> 4:22 = #1 + int main(int argc, const char *argv[]) { func(); func2(); func3(); + func4(); } diff --git a/test/CoverageMapping/switch.c b/test/CoverageMapping/switch.cpp index 6aa2b31426f1e..312f26ca16e4f 100644 --- a/test/CoverageMapping/switch.c +++ b/test/CoverageMapping/switch.cpp @@ -1,44 +1,53 @@ -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switch.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++1z -triple %itanium_abi_triple -main-file-name switch.cpp %s | FileCheck %s + // CHECK: foo void foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+8]]:2 = #0 - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:4 = #1 + switch(i) { case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = #2 return; case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3 break; } - int x = 0; + int x = 0; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 = #1 } -void nop() {} +int nop() { return 0; } // CHECK: bar void bar(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+20]]:2 = #0 - switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:6 = #1 + switch (i) ; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:6 = 0 - switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:4 = #2 + switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+16]]:2 = #1 } - switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3 + switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+13]]:2 = #2 nop(); // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:10 = 0 - switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #4 + switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+10]]:2 = #3 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #5 nop(); - switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:4 = #6 + switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:2 = #4 nop(); // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+2]]:10 = 0 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #7 nop(); } - nop(); + nop(); // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 = #6 +} + + // 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 + : nop(); // CHECK-NEXT: [[@LINE]]:26 -> [[@LINE]]:31 = (#0 - #2) + i) {} + nop(); // CHECK-NEXT: [[@LINE]]:3 -> [[@LINE+1]]:2 = #1 } // CHECK-NEXT: main -int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 +int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+35]]:2 = #0 int i = 0; - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+9]]:4 = #1 + switch(i) { case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:10 = #2 i = 1; break; @@ -48,7 +57,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #4 break; } - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+8]]:4 = #5 + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+23]]:2 = #1 case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:10 = #6 i = 1; break; @@ -58,7 +67,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 break; } - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:4 = #9 + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+13]]:2 = #5 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:11 = #10 case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:11 = (#10 + #11) i = 11; @@ -67,7 +76,8 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 i = 99; } - foo(1); + foo(1); // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:11 = #9 bar(1); + baz(); return 0; } diff --git a/test/CoverageMapping/switchmacro.c b/test/CoverageMapping/switchmacro.c index f83d26fd1688a..55f93d8f60c09 100644 --- a/test/CoverageMapping/switchmacro.c +++ b/test/CoverageMapping/switchmacro.c @@ -4,7 +4,7 @@ // CHECK: foo int foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:16 -> {{[0-9]+}}:2 = #0 - switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> {{[0-9]+}}:4 = #1 + 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 |