diff --git a/compiler-rt/test/profile/instrprof-block-coverage.c b/compiler-rt/test/profile/instrprof-block-coverage.c index 4f1e77810ab5f..829d5af8dc3f9 100644 --- a/compiler-rt/test/profile/instrprof-block-coverage.c +++ b/compiler-rt/test/profile/instrprof-block-coverage.c @@ -5,6 +5,9 @@ // RUN: %clang_profuse=%t.profdata -mllvm -pgo-verify-bfi -o - -S -emit-llvm %s 2>%t.errs | FileCheck %s --implicit-check-not="!prof" // RUN: FileCheck %s < %t.errs --allow-empty --check-prefix=CHECK-ERROR +// RUN: llvm-profdata merge -o %t2.profdata %t1.profraw %t1.profraw %t2.profraw %t2.profraw +// RUN: llvm-profdata show %t2.profdata | FileCheck %s --check-prefix=COUNTS + #include // CHECK: @foo({{.*}}) @@ -45,3 +48,5 @@ int main(int argc, char *argv[]) { // CHECK-DAG: ![[PROF2]] = !{!"branch_weights", i32 0, i32 1} // CHECK-ERROR-NOT: warning: {{.*}}: Found inconsistent block coverage + +// COUNTS: Maximum function count: 4 diff --git a/compiler-rt/test/profile/instrprof-entry-coverage.c b/compiler-rt/test/profile/instrprof-entry-coverage.c index 99ec38b3e2a6c..1c6816ba01964 100644 --- a/compiler-rt/test/profile/instrprof-entry-coverage.c +++ b/compiler-rt/test/profile/instrprof-entry-coverage.c @@ -3,10 +3,19 @@ // RUN: llvm-profdata merge -o %t.profdata %t.profraw // RUN: llvm-profdata show --covered %t.profdata | FileCheck %s --implicit-check-not goo +// We deliberately merge the raw profile twice to test that internal counts can +// grow larger than one. Technically, accumulating coverage values is different +// than accumulating counts, but this helps discriminate cold functions from hot +// functions when the number of raw profiles is large. +// RUN: llvm-profdata merge -o %t2.profdata %t.profraw %t.profraw +// RUN: llvm-profdata show %t2.profdata | FileCheck %s --check-prefix=COUNTS + // RUN: %clang_cspgogen -O1 -mllvm -pgo-function-entry-coverage %s -o %t.cs.out // RUN: env LLVM_PROFILE_FILE=%t.csprofraw %run %t.cs.out // RUN: llvm-profdata merge -o %t.csprofdata %t.csprofraw // RUN: llvm-profdata show --covered %t.csprofdata --showcs | FileCheck %s --implicit-check-not goo +// RUN: llvm-profdata merge -o %t2.csprofdata %t.csprofraw %t.csprofraw +// RUN: llvm-profdata show --showcs %t2.csprofdata | FileCheck %s --check-prefix=COUNTS void markUsed(int a) { volatile int g; @@ -26,3 +35,5 @@ int main(int argc, char *argv[]) { // CHECK-DAG: main // CHECK-DAG: foo // CHECK-DAG: bar + +// COUNTS: Maximum function count: 2