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