1 // RUN: %strip_comments > %t.stripped.c 2 // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name preprocessor.c %t.stripped.c | FileCheck %s 3 4 // CHECK: func 5 void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+5]]:2 = #0 6 int i = 0; 7 #ifdef MACRO // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+2]]:7 = 0 8 int x = i; 9 #endif 10 } 11 12 // CHECK: main 13 int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 14 int i = 0; 15 #if 0 // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+4]]:9 = 0 16 if(i == 0) { 17 i = 1; 18 } 19 # endif // Mark me skipped! 20 21 #if 1 22 // CHECK-NEXT: File 0, [[@LINE+1]]:6 -> [[@LINE+1]]:12 = #0 23 if(i == 0) { // CHECK: File 0, [[@LINE]]:14 -> [[@LINE+2]]:4 = #1 24 i = 1; 25 } 26 #else // CHECK-NEXT: Skipped,File 0, [[@LINE]]:1 -> [[@LINE+5]]:7 = 0 27 if(i == 1) { 28 i = 0; 29 } 30 } 31 #endif 32 33 // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+4]]:8 34 #\ 35 if 0 36 #\ 37 endif // also skipped 38 39 #if 1 40 // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+3]]:7 41 #\ 42 elif 0 43 #endif 44 45 #if 1 46 // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+3]]:7 47 #\ 48 else 49 #endif 50 51 // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+4]]:8 52 #\ 53 ifdef NOT_DEFINED 54 #\ 55 endif 56 57 // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+4]]:8 58 #\ 59 ifndef __FILE__ 60 #\ 61 endif 62 63 // CHECK-NEXT: Skipped,File 0, [[@LINE+1]]:1 -> [[@LINE+6]]:10 64 #\ 65 ifdef NOT_DEFINED 66 #\ 67 \ 68 \ 69 endif // also skipped 70 71 return 0; 72 } 73