xref: /llvm-project/llvm/test/tools/llvm-profgen/recursion-compression-pseudoprobe.test (revision 6c3c90b5a81a3c27dbc195d7e49dc4c89e0e604f)
1; Firstly test uncompression(--compress-recursion=0)
2; 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
3; RUN: FileCheck %s --input-file %t -check-prefix=CHECK-UNCOMPRESS
4; 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
5; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER
6; 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
7; RUN: FileCheck %s --input-file %t
8; 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
9; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER
10; 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
11; RUN: FileCheck %s --input-file %t
12
13; 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
14; CHECK-UNCOMPRESS:  1: 1
15; CHECK-UNCOMPRESS:  3: 1
16; CHECK-UNCOMPRESS:  5: 1
17; CHECK-UNCOMPRESS:  8: 1 fa:1
18; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
19; 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
20; CHECK-UNCOMPRESS:  1: 1
21; CHECK-UNCOMPRESS:  3: 1
22; CHECK-UNCOMPRESS:  4: 1
23; CHECK-UNCOMPRESS:  7: 1 fb:1
24; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
25; 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
26; CHECK-UNCOMPRESS:  1: 1
27; CHECK-UNCOMPRESS:  3: 1
28; CHECK-UNCOMPRESS:  4: 1
29; CHECK-UNCOMPRESS:  7: 1 fb:1
30; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
31; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:3:1
32; CHECK-UNCOMPRESS:  1: 1
33; CHECK-UNCOMPRESS:  2: 1
34; CHECK-UNCOMPRESS:  5: 1 fb:1
35; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
36; 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
37; CHECK-UNCOMPRESS:  1: 1
38; CHECK-UNCOMPRESS:  2: 1
39; CHECK-UNCOMPRESS:  5: 1 fb:1
40; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
41; 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
42; CHECK-UNCOMPRESS:  1: 1
43; CHECK-UNCOMPRESS:  2: 1
44; CHECK-UNCOMPRESS:  5: 1 fb:1
45; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
46; 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
47; CHECK-UNCOMPRESS:  1: 1
48; CHECK-UNCOMPRESS:  3: 1
49; CHECK-UNCOMPRESS:  6: 1 fa:1
50; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
51; 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
52; CHECK-UNCOMPRESS:  1: 1
53; CHECK-UNCOMPRESS:  3: 1
54; CHECK-UNCOMPRESS:  6: 1 fa:1
55; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
56; 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
57; CHECK-UNCOMPRESS:  1: 1
58; CHECK-UNCOMPRESS:  3: 1
59; CHECK-UNCOMPRESS:  6: 1 fa:1
60; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
61; 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
62; CHECK-UNCOMPRESS:  1: 1
63; CHECK-UNCOMPRESS:  3: 1
64; CHECK-UNCOMPRESS:  !CFGChecksum: 563070469352221
65; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:1:0
66; CHECK-UNCOMPRESS:  5: 1 fb:1
67; CHECK-UNCOMPRESS:  !CFGChecksum: 563022570642068
68
69
70; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb]:13:4
71; CHECK:  1: 4
72; CHECK:  2: 3
73; CHECK:  3: 1
74; CHECK:  5: 4 fb:4
75; CHECK:  6: 1 fa:1
76; CHECK !CFGChecksum: 563022570642068
77; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa]:6:2
78; CHECK:  1: 2
79; CHECK:  3: 2
80; CHECK:  4: 1
81; CHECK:  7: 1 fb:1
82; CHECK:  !CFGChecksum: 563070469352221
83 CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa]:4:1
84; CHECK:  1: 1
85; CHECK:  3: 1
86; CHECK:  5: 1
87; CHECK:  8: 1 fa:1
88; CHECK:  !CFGChecksum: 563070469352221
89; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa]:4:1
90; CHECK:  1: 1
91; CHECK:  3: 1
92; CHECK:  4: 1
93; CHECK:  7: 1 fb:1
94; CHECK:  !CFGChecksum: 563070469352221
95; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb]:3:1
96; CHECK:  1: 1
97; CHECK:  3: 1
98; CHECK:  6: 1 fa:1
99; CHECK:  !CFGChecksum: 563022570642068
100; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa:7 @ fb]:3:1
101; CHECK:  1: 1
102; CHECK:  3: 1
103; CHECK:  6: 1 fa:1
104; CHECK:  !CFGChecksum: 563022570642068
105
106; CHECK-UNWINDER:      [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab]
107; CHECK-UNWINDER-NEXT:   3
108; CHECK-UNWINDER-NEXT:   7a0-7a7:1
109; CHECK-UNWINDER-NEXT:   7a0-7ab:3
110; CHECK-UNWINDER-NEXT:   7b2-7b5:1
111; CHECK-UNWINDER-NEXT:   3
112; CHECK-UNWINDER-NEXT:   7a7->7b2:1
113; CHECK-UNWINDER-NEXT:   7ab->7a0:4
114; CHECK-UNWINDER-NEXT:   7b5->7c0:1
115; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5]
116; CHECK-UNWINDER-NEXT:   1
117; CHECK-UNWINDER-NEXT:   7c0-7d4:1
118; CHECK-UNWINDER-NEXT:   1
119; CHECK-UNWINDER-NEXT:   7d4->7c0:1
120; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4]
121; CHECK-UNWINDER-NEXT:   2
122; CHECK-UNWINDER-NEXT:   7c0-7cd:1
123; CHECK-UNWINDER-NEXT:   7db-7e0:1
124; CHECK-UNWINDER-NEXT:   2
125; CHECK-UNWINDER-NEXT:   7cd->7db:1
126; CHECK-UNWINDER-NEXT:   7e0->7a0:1
127; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0]
128; CHECK-UNWINDER-NEXT:   2
129; CHECK-UNWINDER-NEXT:   7a0-7a7:1
130; CHECK-UNWINDER-NEXT:   7b2-7b5:1
131; CHECK-UNWINDER-NEXT:   2
132; CHECK-UNWINDER-NEXT:   7a7->7b2:1
133; CHECK-UNWINDER-NEXT:   7b5->7c0:1
134; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0 @ 0x7b5]
135; CHECK-UNWINDER-NEXT:   2
136; CHECK-UNWINDER-NEXT:   7c0-7cd:2
137; CHECK-UNWINDER-NEXT:   7db-7e0:1
138; CHECK-UNWINDER-NEXT:   2
139; CHECK-UNWINDER-NEXT:   7cd->7db:2
140; CHECK-UNWINDER-NEXT:   7e0->7a0:1
141; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0 @ 0x7b5 @ 0x7e0]
142; CHECK-UNWINDER-NEXT:   2
143; CHECK-UNWINDER-NEXT:   7a0-7a7:1
144; CHECK-UNWINDER-NEXT:   7b2-7b5:1
145; CHECK-UNWINDER-NEXT:   2
146; CHECK-UNWINDER-NEXT:   7a7->7b2:1
147; CHECK-UNWINDER-NEXT:   7b5->7c0:1
148
149
150; clang -O3 -fuse-ld=lld -fpseudo-probe-for-profiling
151; -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Xclang -mdisable-tail-calls
152; -g test.c  -o a.out
153
154#include <stdio.h>
155
156int fb(int n) {
157  if(n > 10) return fb(n / 2);
158  return fa(n - 1);
159}
160
161int fa(int n) {
162  if(n < 2) return n;
163  if(n % 2) return fb(n - 1);
164  return fa(n - 1);
165}
166
167void foo() {
168  int s, i = 0;
169  while (i++ < 10000)
170    s += fa(i);
171  printf("sum is %d\n", s);
172}
173
174int main() {
175  foo();
176  return 0;
177}
178