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