[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