Rong Xu | 9837ef5 | 2016-02-04 18:39:09 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macros.c %s | FileCheck %s |
Alex Lorenz | 34ac9b5 | 2014-08-19 17:32:30 +0000 | [diff] [blame] | 2 | |
Alex Lorenz | 34ac9b5 | 2014-08-19 17:32:30 +0000 | [diff] [blame] | 3 | #define MACRO return; bar() |
| 4 | #define MACRO_2 bar() |
| 5 | #define MACRO_1 return; MACRO_2 |
Igor Kudrin | fc05ee3 | 2016-08-31 07:04:16 +0000 | [diff] [blame] | 6 | #define MACRO_3 MACRO_2 |
Vedant Kumar | 0c3e311 | 2018-11-19 20:10:22 +0000 | [diff] [blame] | 7 | #define GOTO goto |
Alex Lorenz | 34ac9b5 | 2014-08-19 17:32:30 +0000 | [diff] [blame] | 8 | |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 9 | void bar() {} |
Alex Lorenz | 34ac9b5 | 2014-08-19 17:32:30 +0000 | [diff] [blame] | 10 | |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 11 | // CHECK: func |
| 12 | void func() { // CHECK-NEXT: File 0, [[@LINE]]:13 -> [[@LINE+5]]:2 = #0 |
Alex Lorenz | 34ac9b5 | 2014-08-19 17:32:30 +0000 | [diff] [blame] | 13 | int i = 0; |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 14 | // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:8 = #0 |
| 15 | MACRO; // CHECK-NEXT: File 0, [[@LINE]]:8 -> [[@LINE+2]]:2 = 0 |
| 16 | i = 2; |
Alex Lorenz | 34ac9b5 | 2014-08-19 17:32:30 +0000 | [diff] [blame] | 17 | } |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 18 | // CHECK-NEXT: File 1, 3:15 -> 3:28 = #0 |
| 19 | // CHECK-NEXT: File 1, 3:23 -> 3:28 = 0 |
Alex Lorenz | 34ac9b5 | 2014-08-19 17:32:30 +0000 | [diff] [blame] | 20 | |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 21 | // CHECK-NEXT: func2 |
| 22 | void func2() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+5]]:2 = #0 |
| 23 | int i = 0; |
| 24 | // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:10 = #0 |
| 25 | MACRO_1; // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE+2]]:2 = 0 |
| 26 | i = 2; |
| 27 | } |
| 28 | // CHECK-NEXT: File 1, 5:17 -> 5:32 = #0 |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 29 | // CHECK-NEXT: Expansion,File 1, 5:25 -> 5:32 = 0 |
| 30 | // CHECK-NEXT: File 2, 4:17 -> 4:22 = 0 |
| 31 | |
| 32 | // CHECK-NEXT: func3 |
| 33 | void func3() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+3]]:2 = #0 |
| 34 | MACRO_2; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:3 -> [[@LINE]]:10 = #0 |
| 35 | MACRO_2; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:3 -> [[@LINE]]:10 = #0 |
| 36 | } |
| 37 | // CHECK-NEXT: File 1, 4:17 -> 4:22 = #0 |
| 38 | // CHECK-NEXT: File 2, 4:17 -> 4:22 = #0 |
| 39 | |
Igor Kudrin | 8545dae | 2016-08-29 11:48:50 +0000 | [diff] [blame] | 40 | // CHECK-NEXT: func4 |
| 41 | void func4() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+6]]:2 = #0 |
| 42 | int i = 0; |
| 43 | while (i++ < 10) // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE]]:18 = (#0 + #1) |
Vedant Kumar | fa8fa04 | 2017-11-29 22:25:14 +0000 | [diff] [blame] | 44 | if (i < 5) // CHECK: File 0, [[@LINE]]:5 -> [[@LINE+2]]:14 = #1 |
Igor Kudrin | 8545dae | 2016-08-29 11:48:50 +0000 | [diff] [blame] | 45 | // CHECK-NEXT: File 0, [[@LINE-1]]:9 -> [[@LINE-1]]:14 = #1 |
| 46 | MACRO_2; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:7 -> [[@LINE]]:14 = #2 |
| 47 | } |
| 48 | // CHECK-NEXT: File 1, 4:17 -> 4:22 = #2 |
| 49 | // CHECK-NOT: File 1 |
| 50 | |
Igor Kudrin | fc05ee3 | 2016-08-31 07:04:16 +0000 | [diff] [blame] | 51 | // CHECK-NEXT: func5 |
| 52 | void func5() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+4]]:2 = #0 |
| 53 | int i = 0; |
| 54 | if (i > 5) // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:12 = #0 |
| 55 | MACRO_3; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:5 -> [[@LINE]]:12 = #1 |
| 56 | } |
| 57 | // CHECK-NEXT: Expansion,File 1, 6:17 -> 6:24 = #1 |
| 58 | // CHECK-NEXT: File 2, 4:17 -> 4:22 = #1 |
| 59 | |
Vedant Kumar | 0c3e311 | 2018-11-19 20:10:22 +0000 | [diff] [blame] | 60 | // CHECK-NEXT: func6 |
| 61 | void func6(unsigned count) { // CHECK-NEXT: File 0, [[@LINE]]:28 -> [[@LINE+4]]:2 = #0 |
| 62 | begin: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+3]]:2 = #1 |
| 63 | if (count--) // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:16 = #1 |
| 64 | GOTO begin; // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:19 = #2 |
| 65 | } |
| 66 | // CHECK-NEXT: Expansion,File 0, [[@LINE-2]]:9 -> [[@LINE-2]]:13 = #2 |
| 67 | // CHECK-NEXT: File 1, 7:14 -> 7:18 = #2 |
| 68 | |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 69 | int main(int argc, const char *argv[]) { |
| 70 | func(); |
| 71 | func2(); |
| 72 | func3(); |
Igor Kudrin | 8545dae | 2016-08-29 11:48:50 +0000 | [diff] [blame] | 73 | func4(); |
Justin Bogner | bf42cfd | 2015-02-18 21:24:51 +0000 | [diff] [blame] | 74 | } |