xref: /llvm-project/llvm/test/tools/llvm-profgen/inline-pseudoprobe.test (revision 61d418f97154805100dc19ff2ef1338e9de2f27d)
1; RUN: llvm-profgen --format=text --ignore-stack-samples --perfscript=%S/Inputs/inline-cs-pseudoprobe.perfscript --binary=%S/Inputs/inline-cs-pseudoprobe.perfbin --output=%t --profile-summary-cold-count=0
2; RUN: FileCheck %s --input-file %t
3
4; CHECK:     main:88:0
5; CHECK-NEXT: 1: 0
6; CHECK-NEXT: 2: foo:88
7; CHECK-NEXT:  1: 0
8; CHECK-NEXT:  2: 15
9; CHECK-NEXT:  3: 15
10; CHECK-NEXT:  4: 14
11; CHECK-NEXT:  5: 1
12; CHECK-NEXT:  6: 15
13; CHECK-NEXT:  7: 0
14; CHECK-NEXT:  9: 0
15; CHECK-NEXT:  8: bar:28
16; CHECK-NEXT:   1: 14
17; CHECK-NEXT:   4: 14
18; CHECK-NEXT:   !CFGChecksum: 72617220756
19; CHECK-NEXT:  !CFGChecksum: 563088904013236
20; CHECK-NEXT: !CFGChecksum: 281479271677951
21
22
23; clang -O3 -fuse-ld=lld -fpseudo-probe-for-profiling
24; -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Xclang -mdisable-tail-calls
25; -g test.c  -o a.out
26
27#include <stdio.h>
28
29int bar(int x, int y) {
30  if (x % 3) {
31    return x - y;
32  }
33  return x + y;
34}
35
36void foo() {
37  int s, i = 0;
38  while (i++ < 4000 * 4000)
39    if (i % 91) s = bar(i, s); else s += 30;
40  printf("sum is %d\n", s);
41}
42
43int main() {
44  foo();
45  return 0;
46}
47