xref: /llvm-project/llvm/test/tools/llvm-profgen/recursion-compression-pseudoprobe.test (revision 6c3c90b5a81a3c27dbc195d7e49dc4c89e0e604f)
1ac14bb14Swlei; Firstly test uncompression(--compress-recursion=0)
2bc380c09SHongtao Yu; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/recursion-compression-pseudoprobe.perfscript --binary=%S/Inputs/recursion-compression-pseudoprobe.perfbin --output=%t --compress-recursion=0 --profile-summary-hot-count=0 --csspgo-preinliner=0 --gen-cs-nested-profile=0
3ac14bb14Swlei; RUN: FileCheck %s --input-file %t -check-prefix=CHECK-UNCOMPRESS
45d66113aSwlei; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/recursion-compression-pseudoprobe.perfscript --binary=%S/Inputs/recursion-compression-pseudoprobe.perfbin --output=%t --skip-symbolization --profile-summary-hot-count=0
5964053d5Swlei; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER
6bc380c09SHongtao Yu; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/recursion-compression-pseudoprobe.perfscript --binary=%S/Inputs/recursion-compression-pseudoprobe.perfbin --output=%t --profile-summary-hot-count=0 --csspgo-preinliner=0 --gen-cs-nested-profile=0
7ac14bb14Swlei; RUN: FileCheck %s --input-file %t
85d66113aSwlei; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/recursion-compression-pseudoprobe-nommap.perfscript --binary=%S/Inputs/recursion-compression-pseudoprobe.perfbin --output=%t --skip-symbolization --profile-summary-hot-count=0
9964053d5Swlei; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER
10bc380c09SHongtao Yu; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/recursion-compression-pseudoprobe-nommap.perfscript --binary=%S/Inputs/recursion-compression-pseudoprobe.perfbin --output=%t --profile-summary-hot-count=0 --csspgo-preinliner=0 --gen-cs-nested-profile=0
11fe3ba908Swlei; RUN: FileCheck %s --input-file %t
12b9db7036SHongtao Yu
13b9db7036SHongtao Yu; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:6 @ fa]:4:1
14ac14bb14Swlei; CHECK-UNCOMPRESS:  1: 1
15ac14bb14Swlei; CHECK-UNCOMPRESS:  3: 1
16b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  5: 1
17b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  8: 1 fa:1
18bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
19ac14bb14Swlei; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:6 @ fa:8 @ fa]:4:1
20ac14bb14Swlei; CHECK-UNCOMPRESS:  1: 1
21ac14bb14Swlei; CHECK-UNCOMPRESS:  3: 1
22ac14bb14Swlei; CHECK-UNCOMPRESS:  4: 1
23ac14bb14Swlei; CHECK-UNCOMPRESS:  7: 1 fb:1
24bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
25b9db7036SHongtao Yu; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa]:4:1
26ac14bb14Swlei; CHECK-UNCOMPRESS:  1: 1
27ac14bb14Swlei; CHECK-UNCOMPRESS:  3: 1
28b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  4: 1
29b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  7: 1 fb:1
30bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
31b9db7036SHongtao Yu; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:3:1
3200ef28efSWenlei He; CHECK-UNCOMPRESS:  1: 1
3300ef28efSWenlei He; CHECK-UNCOMPRESS:  2: 1
3400ef28efSWenlei He; CHECK-UNCOMPRESS:  5: 1 fb:1
35bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
3600ef28efSWenlei He; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:3:1
3700ef28efSWenlei He; CHECK-UNCOMPRESS:  1: 1
3800ef28efSWenlei He; CHECK-UNCOMPRESS:  2: 1
3900ef28efSWenlei He; CHECK-UNCOMPRESS:  5: 1 fb:1
40bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
41b9db7036SHongtao Yu; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:3:1
4200ef28efSWenlei He; CHECK-UNCOMPRESS:  1: 1
4300ef28efSWenlei He; CHECK-UNCOMPRESS:  2: 1
4400ef28efSWenlei He; CHECK-UNCOMPRESS:  5: 1 fb:1
45bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
46b9db7036SHongtao Yu; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:3:1
47b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  1: 1
48b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  3: 1
49b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  6: 1 fa:1
50b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
51b9db7036SHongtao Yu; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb]:3:1
52b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  1: 1
53b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  3: 1
54b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  6: 1 fa:1
55b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
56b9db7036SHongtao Yu; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa:7 @ fb]:3:1
57b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  1: 1
58b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  3: 1
59b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  6: 1 fa:1
60b9db7036SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
61ac14bb14Swlei; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa:7 @ fb:6 @ fa]:2:1
62ac14bb14Swlei; CHECK-UNCOMPRESS:  1: 1
63ac14bb14Swlei; CHECK-UNCOMPRESS:  3: 1
64bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
65ac14bb14Swlei; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:1:0
66ac14bb14Swlei; CHECK-UNCOMPRESS:  5: 1 fb:1
67bd524955SHongtao Yu; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
68856a6a50Swlei
69856a6a50Swlei
70ac14bb14Swlei; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb]:13:4
71ac14bb14Swlei; CHECK:  1: 4
72ac14bb14Swlei; CHECK:  2: 3
73ac14bb14Swlei; CHECK:  3: 1
74*a7fa5febSZequan Wu; CHECK:  5: 4 fb:4
75ac14bb14Swlei; CHECK:  6: 1 fa:1
76bd524955SHongtao Yu; CHECK !CFGChecksum: 563022570642068
77ac14bb14Swlei; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa]:6:2
78ac14bb14Swlei; CHECK:  1: 2
79ac14bb14Swlei; CHECK:  3: 2
80ac14bb14Swlei; CHECK:  4: 1
81ac14bb14Swlei; CHECK:  7: 1 fb:1
82bd524955SHongtao Yu; CHECK:  !CFGChecksum: 563070469352221
83b9db7036SHongtao Yu CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa]:4:1
84b9db7036SHongtao Yu; CHECK:  1: 1
85b9db7036SHongtao Yu; CHECK:  3: 1
86b9db7036SHongtao Yu; CHECK:  5: 1
87b9db7036SHongtao Yu; CHECK:  8: 1 fa:1
88b9db7036SHongtao Yu; CHECK:  !CFGChecksum: 563070469352221
89c3aeabaeSwlei; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa]:4:1
90ac14bb14Swlei; CHECK:  1: 1
91ac14bb14Swlei; CHECK:  3: 1
92c3aeabaeSwlei; CHECK:  4: 1
93c3aeabaeSwlei; CHECK:  7: 1 fb:1
94bd524955SHongtao Yu; CHECK:  !CFGChecksum: 563070469352221
9500ef28efSWenlei He; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb]:3:1
9600ef28efSWenlei He; CHECK:  1: 1
9700ef28efSWenlei He; CHECK:  3: 1
9800ef28efSWenlei He; CHECK:  6: 1 fa:1
99bd524955SHongtao Yu; CHECK:  !CFGChecksum: 563022570642068
100b9db7036SHongtao Yu; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa:7 @ fb]:3:1
101b9db7036SHongtao Yu; CHECK:  1: 1
102b9db7036SHongtao Yu; CHECK:  3: 1
103b9db7036SHongtao Yu; CHECK:  6: 1 fa:1
104b9db7036SHongtao Yu; CHECK:  !CFGChecksum: 563022570642068
105c3aeabaeSwlei
1063f970168SHongtao Yu; CHECK-UNWINDER:      [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab]
1071422fa5fSwlei; CHECK-UNWINDER-NEXT:   3
1081422fa5fSwlei; CHECK-UNWINDER-NEXT:   7a0-7a7:1
1091422fa5fSwlei; CHECK-UNWINDER-NEXT:   7a0-7ab:3
1101422fa5fSwlei; CHECK-UNWINDER-NEXT:   7b2-7b5:1
1111422fa5fSwlei; CHECK-UNWINDER-NEXT:   3
1121422fa5fSwlei; CHECK-UNWINDER-NEXT:   7a7->7b2:1
1131422fa5fSwlei; CHECK-UNWINDER-NEXT:   7ab->7a0:4
1141422fa5fSwlei; CHECK-UNWINDER-NEXT:   7b5->7c0:1
1153f970168SHongtao Yu; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5]
1161422fa5fSwlei; CHECK-UNWINDER-NEXT:   1
1171422fa5fSwlei; CHECK-UNWINDER-NEXT:   7c0-7d4:1
1181422fa5fSwlei; CHECK-UNWINDER-NEXT:   1
1191422fa5fSwlei; CHECK-UNWINDER-NEXT:   7d4->7c0:1
1203f970168SHongtao Yu; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4]
1211422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1221422fa5fSwlei; CHECK-UNWINDER-NEXT:   7c0-7cd:1
1231422fa5fSwlei; CHECK-UNWINDER-NEXT:   7db-7e0:1
1241422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1251422fa5fSwlei; CHECK-UNWINDER-NEXT:   7cd->7db:1
1261422fa5fSwlei; CHECK-UNWINDER-NEXT:   7e0->7a0:1
1273f970168SHongtao Yu; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0]
1281422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1291422fa5fSwlei; CHECK-UNWINDER-NEXT:   7a0-7a7:1
1301422fa5fSwlei; CHECK-UNWINDER-NEXT:   7b2-7b5:1
1311422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1321422fa5fSwlei; CHECK-UNWINDER-NEXT:   7a7->7b2:1
1331422fa5fSwlei; CHECK-UNWINDER-NEXT:   7b5->7c0:1
1343f970168SHongtao Yu; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0 @ 0x7b5]
1351422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1361422fa5fSwlei; CHECK-UNWINDER-NEXT:   7c0-7cd:2
1371422fa5fSwlei; CHECK-UNWINDER-NEXT:   7db-7e0:1
1381422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1391422fa5fSwlei; CHECK-UNWINDER-NEXT:   7cd->7db:2
1401422fa5fSwlei; CHECK-UNWINDER-NEXT:   7e0->7a0:1
1413f970168SHongtao Yu; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0 @ 0x7b5 @ 0x7e0]
1421422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1431422fa5fSwlei; CHECK-UNWINDER-NEXT:   7a0-7a7:1
1441422fa5fSwlei; CHECK-UNWINDER-NEXT:   7b2-7b5:1
1451422fa5fSwlei; CHECK-UNWINDER-NEXT:   2
1461422fa5fSwlei; CHECK-UNWINDER-NEXT:   7a7->7b2:1
1471422fa5fSwlei; CHECK-UNWINDER-NEXT:   7b5->7c0:1
148ac14bb14Swlei
149ac14bb14Swlei
15061d418f9SArthur Eubanks; clang -O3 -fuse-ld=lld -fpseudo-probe-for-profiling
151ac14bb14Swlei; -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Xclang -mdisable-tail-calls
152ac14bb14Swlei; -g test.c  -o a.out
153ac14bb14Swlei
154ac14bb14Swlei#include <stdio.h>
155ac14bb14Swlei
156ac14bb14Swleiint fb(int n) {
157ac14bb14Swlei  if(n > 10) return fb(n / 2);
158ac14bb14Swlei  return fa(n - 1);
159ac14bb14Swlei}
160ac14bb14Swlei
161ac14bb14Swleiint fa(int n) {
162ac14bb14Swlei  if(n < 2) return n;
163ac14bb14Swlei  if(n % 2) return fb(n - 1);
164ac14bb14Swlei  return fa(n - 1);
165ac14bb14Swlei}
166ac14bb14Swlei
167ac14bb14Swleivoid foo() {
168ac14bb14Swlei  int s, i = 0;
169ac14bb14Swlei  while (i++ < 10000)
170ac14bb14Swlei    s += fa(i);
171ac14bb14Swlei  printf("sum is %d\n", s);
172ac14bb14Swlei}
173ac14bb14Swlei
174ac14bb14Swleiint main() {
175ac14bb14Swlei  foo();
176ac14bb14Swlei  return 0;
177ac14bb14Swlei}
178