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