178 lines · plain
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=03; RUN: FileCheck %s --input-file %t -check-prefix=CHECK-UNCOMPRESS4; 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=05; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER6; 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=07; RUN: FileCheck %s --input-file %t8; 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=09; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER10; 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=011; RUN: FileCheck %s --input-file %t12 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:114; CHECK-UNCOMPRESS: 1: 115; CHECK-UNCOMPRESS: 3: 116; CHECK-UNCOMPRESS: 5: 117; CHECK-UNCOMPRESS: 8: 1 fa:118; CHECK-UNCOMPRESS: !CFGChecksum: 56307046935222119; 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:120; CHECK-UNCOMPRESS: 1: 121; CHECK-UNCOMPRESS: 3: 122; CHECK-UNCOMPRESS: 4: 123; CHECK-UNCOMPRESS: 7: 1 fb:124; CHECK-UNCOMPRESS: !CFGChecksum: 56307046935222125; 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:126; CHECK-UNCOMPRESS: 1: 127; CHECK-UNCOMPRESS: 3: 128; CHECK-UNCOMPRESS: 4: 129; CHECK-UNCOMPRESS: 7: 1 fb:130; CHECK-UNCOMPRESS: !CFGChecksum: 56307046935222131; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:3:132; CHECK-UNCOMPRESS: 1: 133; CHECK-UNCOMPRESS: 2: 134; CHECK-UNCOMPRESS: 5: 1 fb:135; CHECK-UNCOMPRESS: !CFGChecksum: 56302257064206836; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:3:137; CHECK-UNCOMPRESS: 1: 138; CHECK-UNCOMPRESS: 2: 139; CHECK-UNCOMPRESS: 5: 1 fb:140; CHECK-UNCOMPRESS: !CFGChecksum: 56302257064206841; 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:142; CHECK-UNCOMPRESS: 1: 143; CHECK-UNCOMPRESS: 2: 144; CHECK-UNCOMPRESS: 5: 1 fb:145; CHECK-UNCOMPRESS: !CFGChecksum: 56302257064206846; 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:147; CHECK-UNCOMPRESS: 1: 148; CHECK-UNCOMPRESS: 3: 149; CHECK-UNCOMPRESS: 6: 1 fa:150; CHECK-UNCOMPRESS: !CFGChecksum: 56302257064206851; 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:152; CHECK-UNCOMPRESS: 1: 153; CHECK-UNCOMPRESS: 3: 154; CHECK-UNCOMPRESS: 6: 1 fa:155; CHECK-UNCOMPRESS: !CFGChecksum: 56302257064206856; 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:157; CHECK-UNCOMPRESS: 1: 158; CHECK-UNCOMPRESS: 3: 159; CHECK-UNCOMPRESS: 6: 1 fa:160; CHECK-UNCOMPRESS: !CFGChecksum: 56302257064206861; 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:162; CHECK-UNCOMPRESS: 1: 163; CHECK-UNCOMPRESS: 3: 164; CHECK-UNCOMPRESS: !CFGChecksum: 56307046935222165; CHECK-UNCOMPRESS: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:5 @ fb:5 @ fb:5 @ fb]:1:066; CHECK-UNCOMPRESS: 5: 1 fb:167; CHECK-UNCOMPRESS: !CFGChecksum: 56302257064206868 69 70; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb]:13:471; CHECK: 1: 472; CHECK: 2: 373; CHECK: 3: 174; CHECK: 5: 4 fb:475; CHECK: 6: 1 fa:176; CHECK !CFGChecksum: 56302257064206877; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa]:6:278; CHECK: 1: 279; CHECK: 3: 280; CHECK: 4: 181; CHECK: 7: 1 fb:182; CHECK: !CFGChecksum: 56307046935222183 CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa]:4:184; CHECK: 1: 185; CHECK: 3: 186; CHECK: 5: 187; CHECK: 8: 1 fa:188; CHECK: !CFGChecksum: 56307046935222189; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa]:4:190; CHECK: 1: 191; CHECK: 3: 192; CHECK: 4: 193; CHECK: 7: 1 fb:194; CHECK: !CFGChecksum: 56307046935222195; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb]:3:196; CHECK: 1: 197; CHECK: 3: 198; CHECK: 6: 1 fa:199; CHECK: !CFGChecksum: 563022570642068100; CHECK: [main:2 @ foo:5 @ fa:8 @ fa:7 @ fb:5 @ fb:6 @ fa:8 @ fa:7 @ fb:6 @ fa:7 @ fb]:3:1101; CHECK: 1: 1102; CHECK: 3: 1103; CHECK: 6: 1 fa:1104; CHECK: !CFGChecksum: 563022570642068105 106; CHECK-UNWINDER: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab]107; CHECK-UNWINDER-NEXT: 3108; CHECK-UNWINDER-NEXT: 7a0-7a7:1109; CHECK-UNWINDER-NEXT: 7a0-7ab:3110; CHECK-UNWINDER-NEXT: 7b2-7b5:1111; CHECK-UNWINDER-NEXT: 3112; CHECK-UNWINDER-NEXT: 7a7->7b2:1113; CHECK-UNWINDER-NEXT: 7ab->7a0:4114; CHECK-UNWINDER-NEXT: 7b5->7c0:1115; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5]116; CHECK-UNWINDER-NEXT: 1117; CHECK-UNWINDER-NEXT: 7c0-7d4:1118; CHECK-UNWINDER-NEXT: 1119; CHECK-UNWINDER-NEXT: 7d4->7c0:1120; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4]121; CHECK-UNWINDER-NEXT: 2122; CHECK-UNWINDER-NEXT: 7c0-7cd:1123; CHECK-UNWINDER-NEXT: 7db-7e0:1124; CHECK-UNWINDER-NEXT: 2125; CHECK-UNWINDER-NEXT: 7cd->7db:1126; CHECK-UNWINDER-NEXT: 7e0->7a0:1127; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0]128; CHECK-UNWINDER-NEXT: 2129; CHECK-UNWINDER-NEXT: 7a0-7a7:1130; CHECK-UNWINDER-NEXT: 7b2-7b5:1131; CHECK-UNWINDER-NEXT: 2132; CHECK-UNWINDER-NEXT: 7a7->7b2:1133; CHECK-UNWINDER-NEXT: 7b5->7c0:1134; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0 @ 0x7b5]135; CHECK-UNWINDER-NEXT: 2136; CHECK-UNWINDER-NEXT: 7c0-7cd:2137; CHECK-UNWINDER-NEXT: 7db-7e0:1138; CHECK-UNWINDER-NEXT: 2139; CHECK-UNWINDER-NEXT: 7cd->7db:2140; CHECK-UNWINDER-NEXT: 7e0->7a0:1141; CHECK-UNWINDER-NEXT: [0x842 @ 0x7d4 @ 0x7e0 @ 0x7ab @ 0x7b5 @ 0x7d4 @ 0x7e0 @ 0x7b5 @ 0x7e0]142; CHECK-UNWINDER-NEXT: 2143; CHECK-UNWINDER-NEXT: 7a0-7a7:1144; CHECK-UNWINDER-NEXT: 7b2-7b5:1145; CHECK-UNWINDER-NEXT: 2146; CHECK-UNWINDER-NEXT: 7a7->7b2:1147; CHECK-UNWINDER-NEXT: 7b5->7c0:1148 149 150; clang -O3 -fuse-ld=lld -fpseudo-probe-for-profiling151; -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Xclang -mdisable-tail-calls152; -g test.c -o a.out153 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