blob: 847910048992f00e6d6f32944cbfbb95ff02b51a [file] [log] [blame]
Alex Lorenz34ac9b52014-08-19 17:32:30 +00001// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switch.c %s | FileCheck %s
2 // CHECK: foo
Justin Bogner4da909b2015-02-03 21:35:49 +00003void foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+8]]:2 = #0
Alex Lorenz34ac9b52014-08-19 17:32:30 +00004 switch(i) {
Justin Bogner4da909b2015-02-03 21:35:49 +00005 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:11 = #2
Alex Lorenz34ac9b52014-08-19 17:32:30 +00006 return;
Justin Bogner4da909b2015-02-03 21:35:49 +00007 case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3
Alex Lorenz34ac9b52014-08-19 17:32:30 +00008 break;
Justin Bogner4da909b2015-02-03 21:35:49 +00009 } // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:12 = #1
Alex Lorenz34ac9b52014-08-19 17:32:30 +000010 int x = 0;
11}
12
13 // CHECK-NEXT: main
Justin Bogner4da909b2015-02-03 21:35:49 +000014int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0
Alex Lorenz34ac9b52014-08-19 17:32:30 +000015 int i = 0;
16 switch(i) {
Justin Bogner4da909b2015-02-03 21:35:49 +000017 case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #2
Alex Lorenz34ac9b52014-08-19 17:32:30 +000018 i = 1;
19 break;
Justin Bogner4da909b2015-02-03 21:35:49 +000020 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #3
Alex Lorenz34ac9b52014-08-19 17:32:30 +000021 i = 2;
22 break;
Justin Bogner4da909b2015-02-03 21:35:49 +000023 default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #4
Alex Lorenz34ac9b52014-08-19 17:32:30 +000024 break;
Justin Bogner4da909b2015-02-03 21:35:49 +000025 } // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:14 = #1
Alex Lorenz34ac9b52014-08-19 17:32:30 +000026 switch(i) {
Justin Bogner4da909b2015-02-03 21:35:49 +000027 case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #6
Alex Lorenz34ac9b52014-08-19 17:32:30 +000028 i = 1;
29 break;
Justin Bogner4da909b2015-02-03 21:35:49 +000030 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #7
Alex Lorenz34ac9b52014-08-19 17:32:30 +000031 i = 2;
Justin Bogner4da909b2015-02-03 21:35:49 +000032 default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = (#7 + #8)
Alex Lorenz34ac9b52014-08-19 17:32:30 +000033 break;
Justin Bogner4da909b2015-02-03 21:35:49 +000034 } // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:14 = #5
Alex Lorenz34ac9b52014-08-19 17:32:30 +000035
36
37 switch(i) {
Justin Bogner4da909b2015-02-03 21:35:49 +000038 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE]]:10 = #10
39 case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:11 = (#10 + #11)
Alex Lorenz34ac9b52014-08-19 17:32:30 +000040 i = 11;
Justin Bogner4da909b2015-02-03 21:35:49 +000041 case 3: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE]]:10 = ((#10 + #11) + #12)
42 case 4: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:11 = (((#10 + #11) + #12) + #13)
Alex Lorenz34ac9b52014-08-19 17:32:30 +000043 i = 99;
Justin Bogner4da909b2015-02-03 21:35:49 +000044 } // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:11 = #9
Alex Lorenz34ac9b52014-08-19 17:32:30 +000045
46 foo(1);
47 return 0;
48}