[compiler-rt] f872706 - [InstrProf] Test that entry coverage counts accumulate (#81806)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 15 10:06:18 PST 2024
Author: Ellis Hoag
Date: 2024-02-15T08:06:15-10:00
New Revision: f872706615cb928ec35ea35280536b59a22a2bf2
URL: https://github.com/llvm/llvm-project/commit/f872706615cb928ec35ea35280536b59a22a2bf2
DIFF: https://github.com/llvm/llvm-project/commit/f872706615cb928ec35ea35280536b59a22a2bf2.diff
LOG: [InstrProf] Test that entry coverage counts accumulate (#81806)
Added:
Modified:
compiler-rt/test/profile/instrprof-block-coverage.c
compiler-rt/test/profile/instrprof-entry-coverage.c
Removed:
################################################################################
diff --git a/compiler-rt/test/profile/instrprof-block-coverage.c b/compiler-rt/test/profile/instrprof-block-coverage.c
index 4f1e77810ab5fd..829d5af8dc3f9e 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 <stdlib.h>
// 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 99ec38b3e2a6c9..1c6816ba01964b 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
diff erent
+// 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
More information about the llvm-commits
mailing list