xref: /aosp_15_r20/external/clang/test/CoverageMapping/switch.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switch.c %s | FileCheck %s
2*67e74705SXin Li                     // CHECK: foo
foo(int i)3*67e74705SXin Li void foo(int i) {   // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+8]]:2 = #0
4*67e74705SXin Li   switch(i) {       // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:4 = #1
5*67e74705SXin Li   case 1:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = #2
6*67e74705SXin Li     return;
7*67e74705SXin Li   case 2:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3
8*67e74705SXin Li     break;
9*67e74705SXin Li   }
10*67e74705SXin Li   int x = 0;
11*67e74705SXin Li }
12*67e74705SXin Li 
nop()13*67e74705SXin Li void nop() {}
14*67e74705SXin Li 
15*67e74705SXin Li                     // CHECK: bar
bar(int i)16*67e74705SXin Li void bar(int i) {   // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+20]]:2 = #0
17*67e74705SXin Li   switch (i)        // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:6 = #1
18*67e74705SXin Li     ;               // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:6 = 0
19*67e74705SXin Li 
20*67e74705SXin Li   switch (i) {      // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:4 = #2
21*67e74705SXin Li   }
22*67e74705SXin Li 
23*67e74705SXin Li   switch (i)        // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3
24*67e74705SXin Li     nop();          // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:10 = 0
25*67e74705SXin Li 
26*67e74705SXin Li   switch (i)        // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #4
27*67e74705SXin Li   case 1:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #5
28*67e74705SXin Li     nop();
29*67e74705SXin Li 
30*67e74705SXin Li   switch (i) {      // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:4 = #6
31*67e74705SXin Li     nop();          // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+2]]:10 = 0
32*67e74705SXin Li   case 1:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #7
33*67e74705SXin Li     nop();
34*67e74705SXin Li   }
35*67e74705SXin Li   nop();
36*67e74705SXin Li }
37*67e74705SXin Li 
38*67e74705SXin Li                     // CHECK-NEXT: main
main()39*67e74705SXin Li int main() {        // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0
40*67e74705SXin Li   int i = 0;
41*67e74705SXin Li   switch(i) {       // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+9]]:4 = #1
42*67e74705SXin Li   case 0:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:10 = #2
43*67e74705SXin Li     i = 1;
44*67e74705SXin Li     break;
45*67e74705SXin Li   case 1:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #3
46*67e74705SXin Li     i = 2;
47*67e74705SXin Li     break;
48*67e74705SXin Li   default:          // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #4
49*67e74705SXin Li     break;
50*67e74705SXin Li   }
51*67e74705SXin Li   switch(i) {       // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+8]]:4 = #5
52*67e74705SXin Li   case 0:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:10 = #6
53*67e74705SXin Li     i = 1;
54*67e74705SXin Li     break;
55*67e74705SXin Li   case 1:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = #7
56*67e74705SXin Li     i = 2;
57*67e74705SXin Li   default:          // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = (#7 + #8)
58*67e74705SXin Li     break;
59*67e74705SXin Li   }
60*67e74705SXin Li 
61*67e74705SXin Li   switch(i) {       // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:4 = #9
62*67e74705SXin Li   case 1:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:11 = #10
63*67e74705SXin Li   case 2:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:11 = (#10 + #11)
64*67e74705SXin Li     i = 11;
65*67e74705SXin Li   case 3:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:11 = ((#10 + #11) + #12)
66*67e74705SXin Li   case 4:           // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:11 = (((#10 + #11) + #12) + #13)
67*67e74705SXin Li     i = 99;
68*67e74705SXin Li   }
69*67e74705SXin Li 
70*67e74705SXin Li   foo(1);
71*67e74705SXin Li   bar(1);
72*67e74705SXin Li   return 0;
73*67e74705SXin Li }
74