Skip to content

Commit 1a2e77c

Browse files
committed
Revert "Revert "Inlining: Run the legacy AlwaysInliner before the regular inliner.""
This reverts commit 86bfeb9. This is a long time coming re-application that was originally reverted due to regressions, unrelated to the actual inlining change. These regressions have since been fixed due to another long-in-the-making change of a66051c landing. Original commit message for reference: --- We have several situations where it's beneficial for code size to ensure that every call to always-inline functions are inlined before normal inlining decisions are made. While the normal inliner runs in a "MandatoryOnly" mode to try to do this, it only does it on a per-SCC basis, rather than the whole module. Ensuring that all mandatory inlinings are done before any heuristic based decisions are made just makes sense. Despite being referred to the "legacy" AlwaysInliner pass, it's already necessary for -O0 because the CGSCC inliner is too expensive in compile time to run at -O0. This also fixes an exponential compile time blow up in llvm#59126 Differential Revision: https://reviews.llvm.org/D143624 ---
1 parent ebc2c4b commit 1a2e77c

13 files changed

+692
-525
lines changed

clang/test/Frontend/optimization-remark-with-hotness-new-pm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ void bar(int x) {
7373
// THRESHOLD-NOT: hotness
7474
// NO_PGO: '-fdiagnostics-show-hotness' requires profile-guided optimization information
7575
// NO_PGO: '-fdiagnostics-hotness-threshold=' requires profile-guided optimization information
76-
// expected-remark@+1 {{'foo' inlined into 'bar': always inline attribute at callsite bar:8:10; (hotness:}}
76+
// expected-remark@+1 {{'foo' inlined into 'bar' with (cost=always): always inline attribute at callsite bar:8:10; (hotness:}}
7777
sum += foo(x, x - 2);
7878
}
7979

clang/test/Headers/__clang_hip_math.hip

Lines changed: 505 additions & 505 deletions
Large diffs are not rendered by default.

clang/test/OpenMP/bug57757.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,23 @@ void foo() {
3232
// CHECK-NEXT: entry:
3333
// CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds [[STRUCT_KMP_TASK_T:%.*]], ptr [[TMP1]], i64 0, i32 2
3434
// CHECK-NEXT: tail call void @llvm.experimental.noalias.scope.decl(metadata [[META13:![0-9]+]])
35-
// CHECK-NEXT: tail call void @llvm.experimental.noalias.scope.decl(metadata [[META16:![0-9]+]])
36-
// CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP2]], align 4, !tbaa [[TBAA18:![0-9]+]], !alias.scope !13, !noalias !16
35+
// CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP2]], align 4, !tbaa [[TBAA16:![0-9]+]], !alias.scope !13, !noalias !17
3736
// CHECK-NEXT: switch i32 [[TMP3]], label [[DOTOMP_OUTLINED__EXIT:%.*]] [
3837
// CHECK-NEXT: i32 0, label [[DOTUNTIED_JMP__I:%.*]]
3938
// CHECK-NEXT: i32 1, label [[DOTUNTIED_NEXT__I:%.*]]
4039
// CHECK-NEXT: ]
4140
// CHECK: .untied.jmp..i:
42-
// CHECK-NEXT: store i32 1, ptr [[TMP2]], align 4, !tbaa [[TBAA18]], !alias.scope !13, !noalias !16
43-
// CHECK-NEXT: [[TMP4:%.*]] = tail call i32 @__kmpc_omp_task(ptr nonnull @[[GLOB1]], i32 [[TMP0]], ptr [[TMP1]]), !noalias !19
41+
// CHECK-NEXT: store i32 1, ptr [[TMP2]], align 4, !tbaa [[TBAA16]], !alias.scope !13, !noalias !17
42+
// CHECK-NEXT: [[TMP4:%.*]] = tail call i32 @__kmpc_omp_task(ptr nonnull @[[GLOB1]], i32 [[TMP0]], ptr [[TMP1]]), !noalias !13
4443
// CHECK-NEXT: br label [[DOTOMP_OUTLINED__EXIT]]
4544
// CHECK: .untied.next..i:
4645
// CHECK-NEXT: [[TMP5:%.*]] = getelementptr inbounds [[STRUCT_KMP_TASK_T_WITH_PRIVATES:%.*]], ptr [[TMP1]], i64 0, i32 1
4746
// CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds [[STRUCT_KMP_TASK_T_WITH_PRIVATES]], ptr [[TMP1]], i64 0, i32 1, i32 2
4847
// CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds [[STRUCT_KMP_TASK_T_WITH_PRIVATES]], ptr [[TMP1]], i64 0, i32 1, i32 1
49-
// CHECK-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TMP5]], align 8, !tbaa [[TBAA20:![0-9]+]], !alias.scope !16, !noalias !13
50-
// CHECK-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP7]], align 4, !tbaa [[TBAA18]], !alias.scope !16, !noalias !13
51-
// CHECK-NEXT: [[TMP10:%.*]] = load float, ptr [[TMP6]], align 4, !tbaa [[TBAA21:![0-9]+]], !alias.scope !16, !noalias !13
52-
// CHECK-NEXT: tail call void [[TMP8]](i32 noundef [[TMP9]], float noundef [[TMP10]]) #[[ATTR2:[0-9]+]], !noalias !19
48+
// CHECK-NEXT: [[TMP8:%.*]] = load ptr, ptr [[TMP5]], align 8, !tbaa [[TBAA19:![0-9]+]], !noalias !13
49+
// CHECK-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP7]], align 4, !tbaa [[TBAA16]], !noalias !13
50+
// CHECK-NEXT: [[TMP10:%.*]] = load float, ptr [[TMP6]], align 4, !tbaa [[TBAA20:![0-9]+]], !noalias !13
51+
// CHECK-NEXT: tail call void [[TMP8]](i32 noundef [[TMP9]], float noundef [[TMP10]]) #[[ATTR2:[0-9]+]], !noalias !13
5352
// CHECK-NEXT: br label [[DOTOMP_OUTLINED__EXIT]]
5453
// CHECK: .omp_outlined..exit:
5554
// CHECK-NEXT: ret i32 0

llvm/lib/Passes/PassBuilderPipelines.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ static cl::opt<bool> EnableModuleInliner("enable-module-inliner",
164164
cl::desc("Enable module inliner"));
165165

166166
static cl::opt<bool> PerformMandatoryInliningsFirst(
167-
"mandatory-inlining-first", cl::init(true), cl::Hidden,
167+
"mandatory-inlining-first", cl::init(false), cl::Hidden,
168168
cl::desc("Perform mandatory inlinings module-wide, before performing "
169169
"inlining"));
170170

@@ -1127,6 +1127,8 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
11271127
if (EnableSyntheticCounts && !PGOOpt)
11281128
MPM.addPass(SyntheticCountsPropagation());
11291129

1130+
MPM.addPass(AlwaysInlinerPass(/*InsertLifetimeIntrinsics=*/true));
1131+
11301132
if (EnableModuleInliner)
11311133
MPM.addPass(buildModuleInlinerPipeline(Level, Phase));
11321134
else

llvm/test/Other/new-pm-defaults.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@
121121
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
122122
; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass
123123
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
124+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
125+
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
124126
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
125127
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
126128
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -129,14 +131,12 @@
129131
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
130132
; CHECK-O-NEXT: Invalidating analysis: AAManager
131133
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
132-
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
133134
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
134135
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis
135136
; CHECK-O-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy
136137
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
137138
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
138139
; CHECK-O-NEXT: Running pass: InlinerPass
139-
; CHECK-O-NEXT: Running pass: InlinerPass
140140
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
141141
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
142142
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)

llvm/test/Other/new-pm-print-pipeline.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
; CHECK-20: cgscc(inline<only-mandatory>,inline),cgscc(inline)
6363

6464
; RUN: opt -disable-output -disable-verify -print-pipeline-passes -passes='scc-oz-module-inliner' < %s | FileCheck %s --match-full-lines --check-prefixes=CHECK-21
65-
; CHECK-21: require<globals-aa>,function(invalidate<aa>),require<profile-summary>,cgscc(devirt<4>(inline<only-mandatory>,inline,{{.*}},instcombine{{.*}}))
65+
; CHECK-21: require<globals-aa>,function(invalidate<aa>),require<profile-summary>,cgscc(devirt<4>(inline,{{.*}},instcombine{{.*}}))
6666

6767
; RUN: opt -disable-output -disable-verify -print-pipeline-passes -passes='cgscc(function<eager-inv>(no-op-function)),function<eager-inv>(no-op-function)' < %s | FileCheck %s --match-full-lines --check-prefixes=CHECK-22
6868
; CHECK-22: cgscc(function<eager-inv>(no-op-function)),function<eager-inv>(no-op-function)

llvm/test/Other/new-pm-thinlto-postlink-defaults.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
; CHECK-O-NEXT: Running analysis: TypeBasedAA
6262
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
6363
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
64+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
65+
; CHECK-PRELINK-O-NEXT: Running analysis: ProfileSummaryAnalysis
6466
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
6567
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
6668
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -75,7 +77,6 @@
7577
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
7678
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
7779
; CHECK-O-NEXT: Running pass: InlinerPass
78-
; CHECK-O-NEXT: Running pass: InlinerPass
7980
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
8081
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
8182
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)

llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
; CHECK-O-NEXT: Running analysis: LoopAnalysis on foo
5151
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
5252
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
53+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
5354
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
5455
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
5556
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -64,7 +65,6 @@
6465
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
6566
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
6667
; CHECK-O-NEXT: Running pass: InlinerPass
67-
; CHECK-O-NEXT: Running pass: InlinerPass
6868
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
6969
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
7070
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass

llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
; CHECK-O-NEXT: Running analysis: LoopAnalysis on foo
5959
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
6060
; CHECK-O-NEXT: Running pass: SimplifyCFGPass on foo
61+
62+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
6163
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
6264
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
6365
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -71,7 +73,6 @@
7173
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
7274
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
7375
; CHECK-O-NEXT: Running pass: InlinerPass
74-
; CHECK-O-NEXT: Running pass: InlinerPass
7576
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
7677
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
7778
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass

llvm/test/Other/new-pm-thinlto-prelink-defaults.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@
9292
; CHECK-O-NEXT: Running analysis: TypeBasedAA
9393
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
9494
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
95+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
96+
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
9597
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
9698
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
9799
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -100,14 +102,12 @@
100102
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
101103
; CHECK-O-NEXT: Invalidating analysis: AAManager
102104
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
103-
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
104105
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
105106
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis
106107
; CHECK-O-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy
107108
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
108109
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
109110
; CHECK-O-NEXT: Running pass: InlinerPass
110-
; CHECK-O-NEXT: Running pass: InlinerPass
111111
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
112112
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
113113
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)

llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@
8383
; CHECK-O-NEXT: Running pass: PGOIndirectCallPromotion on
8484
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
8585
; CHECK-O-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis on foo
86+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
8687
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
8788
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
8889
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -97,7 +98,6 @@
9798
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
9899
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
99100
; CHECK-O-NEXT: Running pass: InlinerPass
100-
; CHECK-O-NEXT: Running pass: InlinerPass
101101
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
102102
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
103103
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass

llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
; CHECK-O-NEXT: Running analysis: LoopAnalysis on foo
6464
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
6565
; CHECK-O-NEXT: Running pass: SimplifyCFGPass on foo
66+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
6667
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
6768
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
6869
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -76,7 +77,6 @@
7677
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
7778
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
7879
; CHECK-O-NEXT: Running pass: InlinerPass
79-
; CHECK-O-NEXT: Running pass: InlinerPass
8080
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
8181
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
8282
; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
; RUN: opt --Os -pass-remarks=inline -S < %s 2>&1 | FileCheck %s
2+
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
3+
target triple = "arm64e-apple-macosx13"
4+
5+
; CHECK: remark: <unknown>:0:0: 'wibble' inlined into 'bar.8' with (cost=always): always inline attribute
6+
; CHECK: remark: <unknown>:0:0: 'wibble' inlined into 'pluto' with (cost=always): always inline attribute
7+
; CHECK: remark: <unknown>:0:0: 'snork' inlined into 'blam' with (cost=always): always inline attribute
8+
; CHECK: remark: <unknown>:0:0: 'wobble' inlined into 'blam' with (cost=always): always inline attribute
9+
; CHECK: remark: <unknown>:0:0: 'wobble' inlined into 'snork' with (cost=always): always inline attribute
10+
; CHECK: remark: <unknown>:0:0: 'spam' inlined into 'blam' with (cost=65, threshold=75)
11+
; CHECK: remark: <unknown>:0:0: 'wibble.1' inlined into 'widget' with (cost=30, threshold=75)
12+
; CHECK: remark: <unknown>:0:0: 'widget' inlined into 'bar.8' with (cost=30, threshold=75)
13+
; CHECK: remark: <unknown>:0:0: 'barney' inlined into 'wombat' with (cost=30, threshold=75)
14+
15+
define linkonce_odr void @wombat(ptr %arg) #0 {
16+
bb:
17+
call void @barney()
18+
ret void
19+
}
20+
21+
define i1 @foo() {
22+
bb:
23+
call void @wombat(ptr null)
24+
unreachable
25+
}
26+
27+
define linkonce_odr void @pluto() #1 !prof !38 {
28+
bb:
29+
call void @wibble()
30+
ret void
31+
}
32+
33+
; Function Attrs: alwaysinline
34+
define linkonce_odr void @wibble() #2 {
35+
bb:
36+
call void @widget()
37+
ret void
38+
}
39+
40+
define linkonce_odr void @widget() {
41+
bb:
42+
call void @wibble.1()
43+
ret void
44+
}
45+
46+
define linkonce_odr void @wibble.1() {
47+
bb:
48+
%0 = call i32 @foo.2()
49+
call void @blam()
50+
ret void
51+
}
52+
53+
declare i32 @foo.2()
54+
55+
define linkonce_odr void @blam() {
56+
bb:
57+
%tmp = call i32 @snork()
58+
%tmpv1 = call ptr @wombat.3()
59+
call void @eggs()
60+
%tmpv2 = call ptr @wombat.3()
61+
ret void
62+
}
63+
64+
; Function Attrs: alwaysinline
65+
define linkonce_odr i32 @snork() #2 {
66+
bb:
67+
%tmpv1 = call i32 @spam()
68+
%tmpv2 = call i32 @wobble()
69+
call void @widget.4(i32 %tmpv2)
70+
ret i32 0
71+
}
72+
73+
declare void @eggs()
74+
75+
declare ptr @wombat.3()
76+
77+
define linkonce_odr i32 @spam() {
78+
bb:
79+
%tmpv1 = call i32 @wombat.6()
80+
%tmpv2 = call i64 @wobble.5(i8 0)
81+
%tmpv3 = call i64 @bar()
82+
ret i32 0
83+
}
84+
85+
; Function Attrs: alwaysinline
86+
define linkonce_odr i32 @wobble() #2 {
87+
bb:
88+
%tmpv = call i64 @wobble.5(i8 0)
89+
%tmpv1 = call i64 @eggs.7()
90+
%tmpv2 = call i64 @wobble.5(i8 0)
91+
%tmpv3 = call i64 @eggs.7()
92+
%tmpv4 = lshr i64 %tmpv1, 1
93+
%tmpv5 = trunc i64 %tmpv4 to i32
94+
%tmpv6 = xor i32 %tmpv5, 23
95+
ret i32 %tmpv6
96+
}
97+
98+
declare void @widget.4(i32)
99+
100+
declare i64 @bar()
101+
102+
declare i64 @wobble.5(i8)
103+
104+
declare i32 @wombat.6()
105+
106+
declare i64 @eggs.7()
107+
108+
define linkonce_odr void @barney() {
109+
bb:
110+
call void @bar.8()
111+
call void @pluto()
112+
unreachable
113+
}
114+
115+
define linkonce_odr void @bar.8() {
116+
bb:
117+
call void @wibble()
118+
ret void
119+
}
120+
121+
attributes #0 = { "frame-pointer"="non-leaf" }
122+
attributes #1 = { "target-cpu"="apple-m1" }
123+
attributes #2 = { alwaysinline }
124+
125+
!llvm.module.flags = !{!0, !1, !30, !31, !32, !36, !37}
126+
127+
!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 13, i32 3]}
128+
!1 = !{i32 1, !"ProfileSummary", !2}
129+
!2 = !{!3, !4, !5, !6, !7, !8, !9, !10, !11, !12}
130+
!3 = !{!"ProfileFormat", !"InstrProf"}
131+
!4 = !{!"TotalCount", i64 864540306756}
132+
!5 = !{!"MaxCount", i64 6596759955}
133+
!6 = !{!"MaxInternalCount", i64 2828618424}
134+
!7 = !{!"MaxFunctionCount", i64 6596759955}
135+
!8 = !{!"NumCounts", i64 268920}
136+
!9 = !{!"NumFunctions", i64 106162}
137+
!10 = !{!"IsPartialProfile", i64 0}
138+
!11 = !{!"PartialProfileRatio", double 0.000000e+00}
139+
!12 = !{!"DetailedSummary", !13}
140+
!13 = !{!14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27, !28, !29}
141+
!14 = !{i32 10000, i64 5109654023, i32 2}
142+
!15 = !{i32 100000, i64 2480859832, i32 25}
143+
!16 = !{i32 200000, i64 1566552109, i32 70}
144+
!17 = !{i32 300000, i64 973667919, i32 140}
145+
!18 = !{i32 400000, i64 552159773, i32 263}
146+
!19 = !{i32 500000, i64 353879860, i32 463}
147+
!20 = !{i32 600000, i64 187122455, i32 799}
148+
!21 = !{i32 700000, i64 105465980, i32 1419}
149+
!22 = !{i32 800000, i64 49243829, i32 2620}
150+
!23 = !{i32 900000, i64 15198227, i32 5898}
151+
!24 = !{i32 950000, i64 5545670, i32 10696}
152+
!25 = !{i32 990000, i64 804816, i32 25738}
153+
!26 = !{i32 999000, i64 73999, i32 53382}
154+
!27 = !{i32 999900, i64 6530, i32 83503}
155+
!28 = !{i32 999990, i64 899, i32 110416}
156+
!29 = !{i32 999999, i64 120, i32 130201}
157+
!30 = !{i32 7, !"Dwarf Version", i32 4}
158+
!31 = !{i32 2, !"Debug Info Version", i32 3}
159+
!32 = !{i32 1, !"wchar_size", i32 4}
160+
!34 = !{!35}
161+
!35 = !{i32 0, i1 false}
162+
!36 = !{i32 8, !"PIC Level", i32 2}
163+
!37 = !{i32 7, !"frame-pointer", i32 1}
164+
!38 = !{!"function_entry_count", i64 15128150}

0 commit comments

Comments
 (0)