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