1 ; Test default llvm-profgen with preinline off
2 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --csspgo-preinliner=0 --gen-cs-nested-profile=0 --output=%t1
3 ; RUN: FileCheck %s --input-file %t1 --check-prefix=CHECK-DEFAULT
5 ; Test llvm-profgen with preinliner on will merge not inlinable profile into base profile.
6 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --csspgo-preinliner=1 --gen-cs-nested-profile=0 --sample-profile-hot-inline-threshold=3000 --sample-profile-cold-inline-threshold=45 --output=%t2
7 ; RUN: FileCheck %s --input-file %t2 --check-prefix=CHECK-PREINL
9 ; Test preinliner threshold that prevents all possible inlining and merges everything into base profile.
10 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --csspgo-preinliner=1 --gen-cs-nested-profile=0 --sample-profile-hot-inline-threshold=3000 --sample-profile-cold-inline-threshold=0 --output=%t3
11 ; RUN: FileCheck %s --input-file %t3 --check-prefix=CHECK-NO-PREINL
13 ; Test cold profile trimming. Only base profiles should be dropped.
14 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --csspgo-preinliner=1 --gen-cs-nested-profile=0 --sample-profile-hot-inline-threshold=3000 --sample-profile-cold-inline-threshold=45 --output=%t4 --trim-cold-profile=1 --profile-summary-hot-count=400
16 ; RUN: FileCheck %s --input-file %t4 --check-prefix=CHECK-TRIM
18 ; Test llvm-profgen with preinliner on will merge not inlinable profile into base profile.
19 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --csspgo-preinliner=1 --sample-profile-hot-inline-threshold=3000 --sample-profile-cold-inline-threshold=45 --output=%t5 --gen-cs-nested-profile=1
20 ; RUN: FileCheck %s --input-file %t5 --check-prefix=CHECK-PREINL-NEST
22 ; Test preInlined flat is set for extbinary profiles with preinliner on.
23 ; RUN: llvm-profgen --format=extbinary --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --csspgo-preinliner=1 --gen-cs-nested-profile=0 --sample-profile-hot-inline-threshold=3000 --sample-profile-cold-inline-threshold=45 --output=%t2.prof
24 ; RUN: llvm-profdata show --sample -show-sec-info-only %t2.prof | FileCheck %s -check-prefix=CHECK-PREINL-FLAG
25 ; RUN: llvm-profgen --format=extbinary --perfscript=%S/Inputs/inline-cs-noprobe.perfscript --binary=%S/Inputs/inline-cs-noprobe.perfbin --csspgo-preinliner=1 --sample-profile-hot-inline-threshold=3000 --sample-profile-cold-inline-threshold=45 --output=%t5.prof --gen-cs-nested-profile=1
26 ; RUN: llvm-profdata show --sample -show-sec-info-only %t5.prof | FileCheck %s -check-prefix=CHECK-PREINL-FLAG
28 ; Test preInlined flat is set when converted from a text profile that has "ShouldInline" contexts.
29 ; RUN: llvm-profdata merge --sample %t2 -o %t2.prof --extbinary
30 ; RUN: llvm-profdata show --sample -show-sec-info-only %t2.prof | FileCheck %s -check-prefix=CHECK-PREINL-FLAG
31 ; RUN: llvm-profdata merge --sample %t5 -o %t5.prof --extbinary
32 ; RUN: llvm-profdata show --sample -show-sec-info-only %t5.prof | FileCheck %s -check-prefix=CHECK-PREINL-FLAG
35 ; CHECK-DEFAULT: [main:1 @ foo]:309:0
36 ; CHECK-DEFAULT-NEXT: 2.1: 14
37 ; CHECK-DEFAULT-NEXT: 3: 15
38 ; CHECK-DEFAULT-NEXT: 3.1: 14 bar:14
39 ; CHECK-DEFAULT-NEXT: 3.2: 1
40 ; CHECK-DEFAULT-NEXT: 65526: 14
41 ; CHECK-DEFAULT-NEXT: !Attributes: 1
42 ; CHECK-DEFAULT-NEXT:[main:1 @ foo:3.1 @ bar]:84:0
43 ; CHECK-DEFAULT-NEXT: 1: 14
44 ; CHECK-DEFAULT-NEXT: !Attributes: 1
46 ; CHECK-PREINL: [foo]:309:0
47 ; CHECK-PREINL-NEXT: 2.1: 14
48 ; CHECK-PREINL-NEXT: 3: 15
49 ; CHECK-PREINL-NEXT: 3.1: 14 bar:14
50 ; CHECK-PREINL-NEXT: 3.2: 1
51 ; CHECK-PREINL-NEXT: 65526: 14
52 ; CHECK-PREINL-NEXT: !Attributes: 1
53 ; CHECK-PREINL-NEXT:[foo:3.1 @ bar]:84:0
54 ; CHECK-PREINL-NEXT: 1: 14
55 ; CHECK-PREINL-NEXT: !Attributes: 3
57 ; CHECK-NO-PREINL: [foo]:309:0
58 ; CHECK-NO-PREINL-NEXT: 2.1: 14
59 ; CHECK-NO-PREINL-NEXT: 3: 15
60 ; CHECK-NO-PREINL-NEXT: 3.1: 14 bar:14
61 ; CHECK-NO-PREINL-NEXT: 3.2: 1
62 ; CHECK-NO-PREINL-NEXT: 65526: 14
63 ; CHECK-NO-PREINL-NEXT: !Attributes: 1
64 ; CHECK-NO-PREINL-NEXT:[bar]:84:0
65 ; CHECK-NO-PREINL-NEXT: 1: 14
66 ; CHECK-NO-PREINL-NEXT: !Attributes: 1
68 ; CHECK-TRIM-NOT: [foo]:309:0
69 ; CHECK-TRIM:[foo:3.1 @ bar]:84:0
70 ; CHECK-TRIM-NEXT: 1: 14
71 ; CHECK-TRIM-NEXT: !Attributes: 3
73 ; CHECK-PREINL-NEST: foo:379:0
74 ; CHECK-PREINL-NEST-NEXT: 2.1: 14
75 ; CHECK-PREINL-NEST-NEXT: 3: 15
76 ; CHECK-PREINL-NEST-NEXT: 3.2: 1
77 ; CHECK-PREINL-NEST-NEXT: 65526: 14
78 ; CHECK-PREINL-NEST-NEXT: 3.1: bar:84
79 ; CHECK-PREINL-NEST-NEXT: 1: 14
80 ; CHECK-PREINL-NEST-NEXT: !Attributes: 3
83 ; CHECK-PREINL-FLAG: ProfileSummarySection {{.*}} Flags: {{{.*}}preInlined}