1*e69092beSFangrui Song /// Test that llvm-cov supports gcov 8 compatible format.
2*e69092beSFangrui Song #include <math.h>
3*e69092beSFangrui Song #include <stdio.h>
main()4*e69092beSFangrui Song int main() { // GCOV: 1: [[@LINE]]:int main
5*e69092beSFangrui Song double a[11], result; // GCOV-NEXT: -: [[@LINE]]:
6*e69092beSFangrui Song for (int i = 0; i < 11; i++) // GCOV-NEXT: 12: [[@LINE]]:
7*e69092beSFangrui Song scanf("%lf", &a[i]); // GCOV-NEXT: 11: [[@LINE]]:
8*e69092beSFangrui Song for (int i = 10; i >= 0; i--) { // GCOV-NEXT: 12: [[@LINE]]:
9*e69092beSFangrui Song result = sqrt(fabs(a[i])) + 5 * pow(a[i], 3); // GCOV-NEXT: 11: [[@LINE]]:
10*e69092beSFangrui Song printf("\nf(%lf) = "); // GCOV-NEXT: 11: [[@LINE]]:
11*e69092beSFangrui Song if (result > 400) printf("Overflow!"); // GCOV-NEXT: 11: [[@LINE]]:
12*e69092beSFangrui Song else printf("%lf", result); // GCOV-NEXT: 4: [[@LINE]]:
13*e69092beSFangrui Song } // GCOV-NEXT: -: [[@LINE]]:
14*e69092beSFangrui Song return 0; // GCOV-NEXT: 1: [[@LINE]]:
15*e69092beSFangrui Song } // GCOV-NEXT: -: [[@LINE]]:
16*e69092beSFangrui Song
17*e69092beSFangrui Song // RUN: rm -rf %t && mkdir %t && cd %t
18*e69092beSFangrui Song // RUN: cp %s %p/Inputs/gcov-8.gc* .
19*e69092beSFangrui Song
20*e69092beSFangrui Song // RUN: llvm-cov gcov gcov-8.c | FileCheck %s --check-prefixes=OUT,OUTFILE
21*e69092beSFangrui Song // OUT: File 'gcov-8.c'
22*e69092beSFangrui Song // OUT-NEXT: Lines executed:100.00% of 9
23*e69092beSFangrui Song // OUT-B-NEXT: Branches executed:100.00% of 14
24*e69092beSFangrui Song // OUT-B-NEXT: Taken at least once:71.43% of 14
25*e69092beSFangrui Song // OUT-B-NEXT: No calls
26*e69092beSFangrui Song // OUTFILE-NEXT: Creating 'gcov-8.c.gcov'
27*e69092beSFangrui Song // OUT-EMPTY:
28*e69092beSFangrui Song
29*e69092beSFangrui Song // RUN: FileCheck --input-file=%t/gcov-8.c.gcov --check-prefix=HEADER %s
30*e69092beSFangrui Song // RUN: FileCheck --input-file=%t/gcov-8.c.gcov --check-prefix=GCOV %s
31*e69092beSFangrui Song
32*e69092beSFangrui Song // HEADER: {{^}} -: 0:Source:gcov-8.c
33*e69092beSFangrui Song // HEADER-NEXT: -: 0:Graph:gcov-8.gcno
34*e69092beSFangrui Song // HEADER-NEXT: -: 0:Data:gcov-8.gcda
35*e69092beSFangrui Song // HEADER-NEXT: -: 0:Runs:1{{$}}
36*e69092beSFangrui Song // HEADER-NEXT: -: 0:Programs:1
37*e69092beSFangrui Song // HEADER-NEXT: -: 1:/// Test that llvm-cov
38*e69092beSFangrui Song
39*e69092beSFangrui Song // RUN: llvm-cov gcov -i gcov-8.c | FileCheck %s --check-prefix=OUT
40*e69092beSFangrui Song // RUN: FileCheck %s --check-prefix=I < gcov-8.c.gcov
41*e69092beSFangrui Song // RUN: llvm-cov gcov --intermediate-format gcov-8.c
42*e69092beSFangrui Song // RUN: FileCheck %s --check-prefix=I < gcov-8.c.gcov
43*e69092beSFangrui Song
44*e69092beSFangrui Song // RUN: llvm-cov gcov -i -b gcov-8.c | FileCheck %s --check-prefixes=OUT,OUT-B
45*e69092beSFangrui Song // RUN: FileCheck %s --check-prefixes=I,I-B < gcov-8.c.gcov
46*e69092beSFangrui Song
47*e69092beSFangrui Song // I:file:gcov-8.c
48*e69092beSFangrui Song // I-NEXT:function:4,1,main
49*e69092beSFangrui Song // I-NEXT:lcount:4,1
50*e69092beSFangrui Song // I-NEXT:lcount:6,12
51*e69092beSFangrui Song // I-B-NEXT:branch:6,taken
52*e69092beSFangrui Song // I-B-NEXT:branch:6,taken
53*e69092beSFangrui Song // I-NEXT:lcount:7,11
54*e69092beSFangrui Song // I-B-NEXT:branch:7,taken
55*e69092beSFangrui Song // I-B-NEXT:branch:7,nottaken
56*e69092beSFangrui Song // I-NEXT:lcount:8,12
57*e69092beSFangrui Song // I-B-NEXT:branch:8,taken
58*e69092beSFangrui Song // I-B-NEXT:branch:8,taken
59*e69092beSFangrui Song // I-NEXT:lcount:9,11
60*e69092beSFangrui Song // I-NEXT:lcount:10,11
61*e69092beSFangrui Song // I-B-NEXT:branch:10,taken
62*e69092beSFangrui Song // I-B-NEXT:branch:10,nottaken
63*e69092beSFangrui Song // I-NEXT:lcount:11,11
64*e69092beSFangrui Song // I-B-NEXT:branch:11,taken
65*e69092beSFangrui Song // I-B-NEXT:branch:11,taken
66*e69092beSFangrui Song // I-B-NEXT:branch:11,taken
67*e69092beSFangrui Song // I-B-NEXT:branch:11,nottaken
68*e69092beSFangrui Song // I-NEXT:lcount:12,4
69*e69092beSFangrui Song // I-B-NEXT:branch:12,taken
70*e69092beSFangrui Song // I-B-NEXT:branch:12,nottaken
71*e69092beSFangrui Song // I-NEXT:lcount:14,1
72