Clang Project

clang_source_code/test/CodeGen/code-coverage-filter.c
1// RUN: %clang -S -emit-llvm --coverage %s -o %t
2// RUN: FileCheck -check-prefix=ALL < %t %s
3// RUN: %clang -S -emit-llvm --coverage -fprofile-exclude-files=".*\.h$" %s -o %t
4// RUN: FileCheck -check-prefix=NO-HEADER < %t %s
5// RUN: %clang -S -emit-llvm --coverage -fprofile-filter-files=".*\.c$" %s -o %t
6// RUN: FileCheck -check-prefix=NO-HEADER < %t %s
7// RUN: %clang -S -emit-llvm --coverage -fprofile-filter-files=".*\.c$;.*1\.h$" %s -o %t
8// RUN: FileCheck -check-prefix=NO-HEADER2 < %t %s
9// RUN: %clang -S -emit-llvm --coverage -fprofile-exclude-files=".*2\.h$;.*1\.h$" %s -o %t
10// RUN: FileCheck -check-prefix=JUST-C < %t %s
11// RUN: %clang -S -emit-llvm --coverage -fprofile-exclude-files=".*code\-coverage\-filter\.c$" %s -o %t
12// RUN: FileCheck -check-prefix=HEADER < %t %s
13// RUN: %clang -S -emit-llvm --coverage -fprofile-filter-files=".*\.c$" -fprofile-exclude-files=".*\.c$" %s -o %t
14// RUN: FileCheck -check-prefix=NONE < %t %s
15// RUN: %clang -S -emit-llvm --coverage -fprofile-filter-files=".*\.c$" -fprofile-exclude-files=".*\.h$" %s -o %t
16// RUN: FileCheck -check-prefix=JUST-C < %t %s
17
18#include "Inputs/code-coverage-filter1.h"
19#include "Inputs/code-coverage-filter2.h"
20
21void test() {
22  test1();
23  test2();
24}
25
26// ALL: void @test1() #0 {{.*}}
27// ALL: {{.*}}__llvm_gcov_ctr{{.*}}
28// ALL: ret void
29// ALL: void @test2() #0 {{.*}}
30// ALL: {{.*}}__llvm_gcov_ctr{{.*}}
31// ALL: ret void
32// ALL: void @test() #0 {{.*}}
33// ALL: {{.*}}__llvm_gcov_ctr{{.*}}
34// ALL: ret void
35
36// NO-HEADER: void @test1() #0 {{.*}}
37// NO-HEADER-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
38// NO-HEADER: ret void
39// NO-HEADER: void @test2() #0 {{.*}}
40// NO-HEADER-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
41// NO-HEADER: ret void
42// NO-HEADER: void @test() #0 {{.*}}
43// NO-HEADER: {{.*}}__llvm_gcov_ctr{{.*}}
44// NO-HEADER: ret void
45
46// NO-HEADER2: void @test1() #0 {{.*}}
47// NO-HEADER2: {{.*}}__llvm_gcov_ctr{{.*}}
48// NO-HEADER2: ret void
49// NO-HEADER2: void @test2() #0 {{.*}}
50// NO-HEADER2-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
51// NO-HEADER2: ret void
52// NO-HEADER2: void @test() #0 {{.*}}
53// NO-HEADER2: {{.*}}__llvm_gcov_ctr{{.*}}
54// NO-HEADER2: ret void
55
56// JUST-C: void @test1() #0 {{.*}}
57// JUST-C-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
58// JUST-C: ret void
59// JUST-C: void @test2() #0 {{.*}}
60// JUST-C-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
61// JUST-C: ret void
62// JUST-C: void @test() #0 {{.*}}
63// JUST-C: {{.*}}__llvm_gcov_ctr{{.*}}
64// JUST-C: ret void
65
66// HEADER: void @test1() #0 {{.*}}
67// HEADER: {{.*}}__llvm_gcov_ctr{{.*}}
68// HEADER: ret void
69// HEADER: void @test2() #0 {{.*}}
70// HEADER: {{.*}}__llvm_gcov_ctr{{.*}}
71// HEADER: ret void
72// HEADER: void @test() #0 {{.*}}
73// HEADER-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
74// HEADER: ret void
75
76// NONE: void @test1() #0 {{.*}}
77// NONE-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
78// NONE: ret void
79// NONE: void @test2() #0 {{.*}}
80// NONE-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
81// NONE: ret void
82// NONE: void @test() #0 {{.*}}
83// NONE-NOT: {{.*}}__llvm_gcov_ctr{{.*}}
84// NONE: ret void
85