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 | |
21 | void 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 | |