98 lines · plain
1; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-pseudoprobe.perfscript --binary=%S/Inputs/inline-cs-pseudoprobe.perfbin --output=%t --skip-symbolization --profile-summary-cold-count=0 --use-offset=02; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER3; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-pseudoprobe.perfscript --binary=%S/Inputs/inline-cs-pseudoprobe.perfbin --output=%t --skip-symbolization --profile-summary-cold-count=0 --use-offset=14; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER-OFFSET5; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-pseudoprobe.perfscript --binary=%S/Inputs/inline-cs-pseudoprobe.perfbin --output=%t --skip-symbolization --profile-summary-cold-count=0 --use-offset=1 --use-first-loadable-segment-as-base=16; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-UNWINDER-OFFSET27; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-pseudoprobe.perfscript --binary=%S/Inputs/inline-cs-pseudoprobe.perfbin --output=%t --profile-summary-cold-count=0 --csspgo-preinliner=0 --gen-cs-nested-profile=08; RUN: FileCheck %s --input-file %t9; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-pseudoprobe.perfscript --binary=%S/Inputs/inline-cs-pseudoprobe.perfbin --output=%t --profile-summary-cold-count=0 --csspgo-preinliner=0 --gen-cs-nested-profile=0 --mark-all-context-preinlined10; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-MARK-PREINLINED11 12 13; CHECK: [main:2 @ foo]:74:014; CHECK-NEXT: 1: 015; CHECK-NEXT: 2: 1516; CHECK-NEXT: 3: 1517; CHECK-NEXT: 4: 1418; CHECK-NEXT: 5: 119; CHECK-NEXT: 6: 1520; CHECK-NEXT: 7: 021; CHECK-NEXT: 8: 14 bar:1422; CHECK-NEXT: 9: 023; CHECK-NEXT: !CFGChecksum: 56308890401323624; CHECK-NEXT: !Attributes: 125; CHECK-NEXT:[main:2 @ foo:8 @ bar]:28:1426; CHECK-NEXT: 1: 1427; CHECK-NEXT: 4: 1428; CHECK-NEXT: !CFGChecksum: 7261722075629; CHECK-NEXT: !Attributes: 130 31; CHECK-MARK-PREINLINED: [main:2 @ foo]:74:032; CHECK-MARK-PREINLINED-NEXT: 1: 033; CHECK-MARK-PREINLINED-NEXT: 2: 1534; CHECK-MARK-PREINLINED-NEXT: 3: 1535; CHECK-MARK-PREINLINED-NEXT: 4: 1436; CHECK-MARK-PREINLINED-NEXT: 5: 137; CHECK-MARK-PREINLINED-NEXT: 6: 1538; CHECK-MARK-PREINLINED-NEXT: 7: 039; CHECK-MARK-PREINLINED-NEXT: 8: 14 bar:1440; CHECK-MARK-PREINLINED-NEXT: 9: 041; CHECK-MARK-PREINLINED-NEXT: !CFGChecksum: 56308890401323642; CHECK-MARK-PREINLINED-NEXT: !Attributes: 343; CHECK-MARK-PREINLINED-NEXT:[main:2 @ foo:8 @ bar]:28:1444; CHECK-MARK-PREINLINED-NEXT: 1: 1445; CHECK-MARK-PREINLINED-NEXT: 4: 1446; CHECK-MARK-PREINLINED-NEXT: !CFGChecksum: 7261722075647; CHECK-MARK-PREINLINED-NEXT: !Attributes: 348 49; CHECK-UNWINDER: 350; CHECK-UNWINDER-NEXT: 201800-201858:151; CHECK-UNWINDER-NEXT: 20180e-20182b:152; CHECK-UNWINDER-NEXT: 20180e-201858:1353; CHECK-UNWINDER-NEXT: 254; CHECK-UNWINDER-NEXT: 20182b->201800:155; CHECK-UNWINDER-NEXT: 201858->20180e:1556 57 58; CHECK-UNWINDER-OFFSET: 359; CHECK-UNWINDER-OFFSET-NEXT: 800-858:160; CHECK-UNWINDER-OFFSET-NEXT: 80e-82b:161; CHECK-UNWINDER-OFFSET-NEXT: 80e-858:1362; CHECK-UNWINDER-OFFSET-NEXT: 263; CHECK-UNWINDER-OFFSET-NEXT: 82b->800:164; CHECK-UNWINDER-OFFSET-NEXT: 858->80e:1565 66; CHECK-UNWINDER-OFFSET2: 367; CHECK-UNWINDER-OFFSET2-NEXT: 1800-1858:168; CHECK-UNWINDER-OFFSET2-NEXT: 180e-182b:169; CHECK-UNWINDER-OFFSET2-NEXT: 180e-1858:1370; CHECK-UNWINDER-OFFSET2-NEXT: 271; CHECK-UNWINDER-OFFSET2-NEXT: 182b->1800:172; CHECK-UNWINDER-OFFSET2-NEXT: 1858->180e:1573 74; clang -O3 -fuse-ld=lld -fpseudo-probe-for-profiling75; -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Xclang -mdisable-tail-calls76; -g test.c -o a.out77 78#include <stdio.h>79 80int bar(int x, int y) {81 if (x % 3) {82 return x - y;83 }84 return x + y;85}86 87void foo() {88 int s, i = 0;89 while (i++ < 4000 * 4000)90 if (i % 91) s = bar(i, s); else s += 30;91 printf("sum is %d\n", s);92}93 94int main() {95 foo();96 return 0;97}98