// RUN: rm -rf %t && split-file %s %t // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm %t/main.c -o - | FileCheck %s // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -fprofile-list=%t/func.list -emit-llvm %t/main.c -o - | FileCheck %s --check-prefix=FUNC // RUN: echo "src:%t/main.c" | sed -e 's/\\/\\\\/g' > %t-file.list // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -fprofile-list=%t-file.list -emit-llvm %t/main.c -o - | FileCheck %s --check-prefix=FILE // RUN: %clang_cc1 -fprofile-instrument=llvm -fprofile-list=%t/section.list -emit-llvm %t/main.c -o - | FileCheck %s --check-prefix=SECTION // RUN: %clang_cc1 -fprofile-instrument=sample-coldcov -fprofile-list=%t/cold-func.list -emit-llvm %t/main.c -o - | FileCheck %s --check-prefix=COLDCOV // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -fprofile-list=%t/exclude.list -emit-llvm %t/main.c -o - | FileCheck %s --check-prefix=EXCLUDE // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -fprofile-list=%t/exclude-only.list -emit-llvm %t/main.c -o - | FileCheck %s --check-prefix=EXCLUDE //--- func.list fun:test1 //--- section.list [clang] fun:test1 [llvm] fun:test2 //--- cold-func.list [sample-coldcov] fun:test* !fun:test2 //--- exclude.list fun:test* !fun:test1 //--- exclude-only.list !fun:test1 //--- main.c unsigned i; // CHECK: test1 // CHECK: test2 // FUNC: test1 // FUNC-NOT: test2 // FILE: test1 // FILE: test2 // EXCLUDE-NOT: test1 // EXCLUDE: test2 // CHECK-NOT: noprofile // CHECK: @test1 // FUNC-NOT: noprofile // FUNC: @test1 // FILE-NOT: noprofile // FILE: @test1 // SECTION: noprofile // SECTION: @test1 // EXCLUDE: noprofile // EXCLUDE: @test1 // COLDCOV-NOT: noprofile // COLDCOV: @test1 unsigned test1(void) { // CHECK: %pgocount = load i64, ptr @__profc_{{_?}}test1 // FUNC: %pgocount = load i64, ptr @__profc_{{_?}}test1 // FILE: %pgocount = load i64, ptr @__profc_{{_?}}test1 // SECTION-NOT: %pgocount = load i64, ptr @__profc_{{_?}}test1 // EXCLUDE-NOT: %pgocount = load i64, ptr @__profc_{{_?}}test1 return i + 1; } // CHECK-NOT: noprofile // CHECK: @test2 // FUNC: noprofile // FUNC: @test2 // FILE-NOT: noprofile // FILE: @test2 // SECTION-NOT: noprofile // SECTION: @test2 // EXCLUDE-NOT: noprofile // EXCLUDE: @test2 // COLDCOV: noprofile // COLDCOV: @test2 unsigned test2(void) { // CHECK: %pgocount = load i64, ptr @__profc_{{_?}}test2 // FUNC-NOT: %pgocount = load i64, ptr @__profc_{{_?}}test2 // FILE: %pgocount = load i64, ptr @__profc_{{_?}}test2 // SECTION: %pgocount = load i64, ptr @__profc_{{_?}}test2 // EXCLUDE: %pgocount = load i64, ptr @__profc_{{_?}}test2 return i - 1; }