1 // Remove comments first. 2 // RUN: sed 's/[ \t]*\/\/.*//' %s > %t.stripped.cpp 3 // RUN: %clangxx_profgen -fcoverage-mapping -o %t %t.stripped.cpp 4 // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t 5 // RUN: llvm-profdata merge -o %t.profdata %t.profraw 6 // RUN: llvm-cov show %t -instr-profile %t.profdata 2>&1 | FileCheck %s 7 8 9 int main() { // CHECK: [[# @LINE]]| 1|int main() { 10 int x = 0; // CHECK-NEXT: [[# @LINE]]| 1| 11 // CHECK-NEXT: [[# @LINE]]| | 12 x = 1; // CHECK-NEXT: [[# @LINE]]| 1| 13 if (x) // CHECK-NEXT: [[# @LINE]]| 1| 14 // CHECK-NEXT: [[# @LINE]]| | 15 x // CHECK-NEXT: [[# @LINE]]| 1| 16 // CHECK-NEXT: [[# @LINE]]| | 17 = // CHECK-NEXT: [[# @LINE]]| 1| 18 // CHECK-NEXT: [[# @LINE]]| | 19 // CHECK-NEXT: [[# @LINE]]| | 20 0; // CHECK-NEXT: [[# @LINE]]| 1| 21 // CHECK-NEXT: [[# @LINE]]| | 22 if (x) // CHECK-NEXT: [[# @LINE]]| 1| 23 // CHECK-NEXT: [[# @LINE]]| | 24 // CHECK-NEXT: [[# @LINE]]| | 25 x = 1; // CHECK-NEXT: [[# @LINE]]| 0| 26 // CHECK-NEXT: [[# @LINE]]| | 27 #ifdef UNDEFINED // CHECK-NEXT: [[# @LINE]]| | 28 // CHECK-NEXT: [[# @LINE]]| | 29 int y = 0; // CHECK-NEXT: [[# @LINE]]| | 30 // CHECK-NEXT: [[# @LINE]]| | 31 y = 1; // CHECK-NEXT: [[# @LINE]]| | 32 if (y) // CHECK-NEXT: [[# @LINE]]| | 33 // CHECK-NEXT: [[# @LINE]]| | 34 y // CHECK-NEXT: [[# @LINE]]| | 35 // CHECK-NEXT: [[# @LINE]]| | 36 = // CHECK-NEXT: [[# @LINE]]| | 37 // CHECK-NEXT: [[# @LINE]]| | 38 // CHECK-NEXT: [[# @LINE]]| | 39 0; // CHECK-NEXT: [[# @LINE]]| | 40 // CHECK-NEXT: [[# @LINE]]| | 41 #endif // CHECK-NEXT: [[# @LINE]]| | 42 // CHECK-NEXT: [[# @LINE]]| | 43 #define DEFINED 1 // CHECK-NEXT: [[# @LINE]]| 1| 44 // CHECK-NEXT: [[# @LINE]]| | 45 #ifdef DEFINED // CHECK-NEXT: [[# @LINE]]| 1| 46 // CHECK-NEXT: [[# @LINE]]| | 47 int y = 0; // CHECK-NEXT: [[# @LINE]]| 1| 48 // CHECK-NEXT: [[# @LINE]]| | 49 y = 1; // CHECK-NEXT: [[# @LINE]]| 1| 50 if (y) // CHECK-NEXT: [[# @LINE]]| 1| 51 // CHECK-NEXT: [[# @LINE]]| | 52 y // CHECK-NEXT: [[# @LINE]]| 1| 53 // CHECK-NEXT: [[# @LINE]]| | 54 = // CHECK-NEXT: [[# @LINE]]| 1| 55 // CHECK-NEXT: [[# @LINE]]| | 56 // CHECK-NEXT: [[# @LINE]]| | 57 0; // CHECK-NEXT: [[# @LINE]]| 1| 58 #endif // CHECK-NEXT: [[# @LINE]]| 1| 59 // CHECK-NEXT: [[# @LINE]]| | 60 return 0; // CHECK-NEXT: [[# @LINE]]| 1| 61 } // CHECK-NEXT: [[# @LINE]]| 1| 62