xref: /llvm-project/compiler-rt/test/profile/Posix/gcov-file-change.cpp (revision 406e81b79d26dae6838cc69d10a3e22635da09ef)
1 // RUN: rm -rf %t && split-file %s %t && cd %t
2 // RUN: %clangxx --coverage main.cpp -o t
3 // RUN: %run ./t
4 // RUN: llvm-cov gcov -t t-main. | FileCheck %s
5 
6 //--- main.cpp
7 #include "a.h"
8 #include <stdio.h>
9 
10 // CHECK:      Runs:1
11 /// __cxx_global_var_init contains a block from a.h. Don't attribute its lines to main.cpp.
12 // CHECK-NOT:  {{^ +[0-9]+:}}
13 
14 inline auto *const inl_var_main = // CHECK:      1: [[#]]:inline auto
15     new A;                        // CHECK-NEXT: 1: [[#]]:
foo(int x)16 void foo(int x) {                 // CHECK-NEXT: 1: [[#]]:
17   if (x) {                        // CHECK-NEXT: 1: [[#]]:
18 #include "a.inc"
19   }
20 }
21 // CHECK-NOT:  {{^ +[0-9]+:}}
22 
main(int argc,char * argv[])23 int main(int argc, char *argv[]) { // CHECK:      1: [[#]]:int main
24   foo(1);                          // CHECK-NEXT: 1: [[#]]:
25 }                                  // CHECK-NEXT: 1: [[#]]:
26 // CHECK-NOT:  {{^ +[0-9]+:}}
27 
28 // CHECK:      Source:a.h
29 // CHECK:      1: 1:struct A
30 // CHECK-NOT:  {{^ +[0-9]+:}}
31 
32 //--- a.h
33 /// Apple targets doesn't enable -mconstructor-aliases by default and the count may be 4.
AA34 struct A { A() { } };              // CHECK:      {{[24]}}: [[#]]:struct A
35 inline auto *const inl_var_a =
36     new A;
37 /// TODO a.inc:1 should have line execution.
38 // CHECK-NOT:  {{^ +[0-9]+:}}
39 
40 //--- a.inc
41 puts("");
42