1*67e74705SXin Li // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroception.c %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li #define M2 { 4*67e74705SXin Li #define M1 M2 5*67e74705SXin Li #define M22 } 6*67e74705SXin Li #define M11 M22 7*67e74705SXin Li 8*67e74705SXin Li // CHECK-LABEL: main: 9*67e74705SXin Li // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:12 -> [[@LINE+2]]:14 = #0 10*67e74705SXin Li // CHECK-NEXT: File 0, [[@LINE+1]]:14 -> [[@LINE+3]]:2 = #0 11*67e74705SXin Li int main() M1 12*67e74705SXin Li return 0; 13*67e74705SXin Li } 14*67e74705SXin Li // CHECK-NEXT: File 1, 4:12 -> 4:14 = #0 15*67e74705SXin Li // CHECK-NEXT: Expansion,File 1, 4:12 -> 4:14 = #0 16*67e74705SXin Li // CHECK-NEXT: File 2, 3:12 -> 3:13 = #0 17*67e74705SXin Li 18*67e74705SXin Li // CHECK-LABEL: func2: 19*67e74705SXin Li // CHECK-NEXT: File 0, [[@LINE+2]]:14 -> [[@LINE+4]]:4 = #0 20*67e74705SXin Li // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:1 -> [[@LINE+3]]:4 = #0 21*67e74705SXin Li void func2() { 22*67e74705SXin Li int x = 0; 23*67e74705SXin Li M11 24*67e74705SXin Li // CHECK-NEXT: File 1, 6:13 -> 6:16 = #0 25*67e74705SXin Li // CHECK-NEXT: Expansion,File 1, 6:13 -> 6:16 = #0 26*67e74705SXin Li // CHECK-NEXT: File 2, 5:13 -> 5:14 = #0 27*67e74705SXin Li 28*67e74705SXin Li // CHECK-LABEL: func3: 29*67e74705SXin Li // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:14 -> [[@LINE+3]]:16 = #0 30*67e74705SXin Li // CHECK-NEXT: File 0, [[@LINE+2]]:16 -> [[@LINE+4]]:4 = #0 31*67e74705SXin Li // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:1 -> [[@LINE+3]]:4 = #0 32*67e74705SXin Li void func3() M1 33*67e74705SXin Li int x = 0; 34*67e74705SXin Li M11 35*67e74705SXin Li // CHECK-NEXT: File 1, 4:12 -> 4:14 = #0 36*67e74705SXin Li // CHECK-NEXT: Expansion,File 1, 4:12 -> 4:14 = #0 37*67e74705SXin Li // CHECK-NEXT: File 2, 6:13 -> 6:16 = #0 38*67e74705SXin Li // CHECK-NEXT: Expansion,File 2, 6:13 -> 6:16 = #0 39*67e74705SXin Li // CHECK-NEXT: File 3, 3:12 -> 3:13 = #0 40*67e74705SXin Li // CHECK-NEXT: File 4, 5:13 -> 5:14 = #0 41*67e74705SXin Li 42*67e74705SXin Li // CHECK-LABEL: func4: 43*67e74705SXin Li // CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:14 -> [[@LINE+3]]:16 = #0 44*67e74705SXin Li // CHECK-NEXT: File 0, [[@LINE+2]]:16 -> [[@LINE+2]]:20 = #0 45*67e74705SXin Li // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:17 -> [[@LINE+1]]:20 = #0 46*67e74705SXin Li void func4() M1 M11 47*67e74705SXin Li // CHECK-NEXT: File 1, 4:12 -> 4:14 = #0 48*67e74705SXin Li // CHECK-NEXT: Expansion,File 1, 4:12 -> 4:14 = #0 49*67e74705SXin Li // CHECK-NEXT: File 2, 6:13 -> 6:16 = #0 50*67e74705SXin Li // CHECK-NEXT: Expansion,File 2, 6:13 -> 6:16 = #0 51*67e74705SXin Li // CHECK-NEXT: File 3, 3:12 -> 3:13 = #0 52*67e74705SXin Li // CHECK-NEXT: File 4, 5:13 -> 5:14 = #0 53