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
9int 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