Skip to content

Commit cae033d

Browse files
committed
Inlining: Run the legacy AlwaysInliner before the regular inliner.
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 e6edc1b commit cae033d

14 files changed

+561
-397
lines changed

clang/test/CodeGen/code-coverage.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
// RUN: %clang_cc1 -emit-llvm-bc -o /dev/null -fdebug-pass-manager -fprofile-arcs %s 2>&1 | FileCheck --check-prefix=NEWPM %s
1515
// RUN: %clang_cc1 -emit-llvm-bc -o /dev/null -fdebug-pass-manager -fprofile-arcs -O3 %s 2>&1 | FileCheck --check-prefix=NEWPM-O3 %s
1616

17-
// NEWPM-NOT: Running pass
1817
// NEWPM: Running pass: GCOVProfilerPass
1918

2019
// NEWPM-O3-NOT: Running pass

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: 375 additions & 376 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: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ static cl::opt<bool> EnableModuleInliner("enable-module-inliner",
161161
cl::desc("Enable module inliner"));
162162

163163
static cl::opt<bool> PerformMandatoryInliningsFirst(
164-
"mandatory-inlining-first", cl::init(true), cl::Hidden,
164+
"mandatory-inlining-first", cl::init(false), cl::Hidden,
165165
cl::desc("Perform mandatory inlinings module-wide, before performing "
166166
"inlining"));
167167

@@ -1079,6 +1079,9 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
10791079
if (EnableSyntheticCounts && !PGOOpt)
10801080
MPM.addPass(SyntheticCountsPropagation());
10811081

1082+
MPM.addPass(AlwaysInlinerPass(
1083+
/*InsertLifetimeIntrinsics=*/Level != OptimizationLevel::O0));
1084+
10821085
if (EnableModuleInliner)
10831086
MPM.addPass(buildModuleInlinerPipeline(Level, Phase));
10841087
else

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@
122122
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
123123
; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass
124124
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
125+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
126+
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
125127
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
126128
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
127129
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -130,14 +132,12 @@
130132
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
131133
; CHECK-O-NEXT: Invalidating analysis: AAManager
132134
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
133-
; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis
134135
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
135136
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis
136137
; CHECK-O-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy
137138
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
138139
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
139140
; CHECK-O-NEXT: Running pass: InlinerPass
140-
; CHECK-O-NEXT: Running pass: InlinerPass
141141
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
142142
; CHECK-O-NEXT: Running analysis: AAManager
143143
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass

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-defaults.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@
9999
; CHECK-O-NEXT: Running analysis: TypeBasedAA
100100
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
101101
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
102+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
103+
; CHECK-PRELINK-O-NEXT: Running analysis: ProfileSummaryAnalysis
102104
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
103105
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
104106
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -107,14 +109,12 @@
107109
; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager
108110
; CHECK-O-NEXT: Invalidating analysis: AAManager
109111
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis
110-
; CHECK-PRELINK-O-NEXT: Running analysis: ProfileSummaryAnalysis
111112
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
112113
; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis
113114
; CHECK-O-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy
114115
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
115116
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
116117
; CHECK-O-NEXT: Running pass: InlinerPass
117-
; CHECK-O-NEXT: Running pass: InlinerPass
118118
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
119119
; CHECK-O-NEXT: Running analysis: AAManager
120120
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
; CHECK-O123-NEXT: Running analysis: BranchProbabilityAnalysis on foo
6464
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
6565
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
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
@@ -77,7 +78,6 @@
7778
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
7879
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
7980
; CHECK-O-NEXT: Running pass: InlinerPass
80-
; CHECK-O-NEXT: Running pass: InlinerPass
8181
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
8282
; CHECK-O-NEXT: Running analysis: AAManager
8383
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
7474
; CHECK-O-NEXT: Running pass: SimplifyCFGPass on foo
7575

76+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
7677
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
7778
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
7879
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -86,7 +87,6 @@
8687
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy
8788
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
8889
; CHECK-O-NEXT: Running pass: InlinerPass
89-
; CHECK-O-NEXT: Running pass: InlinerPass
9090
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
9191
; CHECK-O-NEXT: Running analysis: AAManager
9292
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
; CHECK-O-NEXT: Running pass: PGOIndirectCallPromotion on
8888
; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy
8989
; CHECK-O-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis on foo
90+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
9091
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
9192
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
9293
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -101,7 +102,6 @@
101102
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
102103
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
103104
; CHECK-O-NEXT: Running pass: InlinerPass
104-
; CHECK-O-NEXT: Running pass: InlinerPass
105105
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
106106
; CHECK-O-NEXT: Running analysis: AAManager
107107
; CHECK-O-NEXT: Running analysis: BasicAA

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
; CHECK-O123-NEXT: Running analysis: BranchProbabilityAnalysis on foo
6969
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
7070
; CHECK-O-NEXT: Running pass: SimplifyCFGPass on foo
71+
; CHECK-O-NEXT: Running pass: AlwaysInlinerPass
7172
; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass
7273
; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis
7374
; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA
@@ -81,7 +82,6 @@
8182
; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>
8283
; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass
8384
; CHECK-O-NEXT: Running pass: InlinerPass
84-
; CHECK-O-NEXT: Running pass: InlinerPass
8585
; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass
8686
; CHECK-O-NEXT: Running analysis: AAManager
8787
; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass
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}

llvm/test/Transforms/PhaseOrdering/ARM/arm_mult_q15.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,5 +218,5 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1
218218

219219
attributes #0 = { nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fullfp16,+hwdiv,+lob,+mve,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-fp-armv8,-fp-armv8sp,-fp16fml,-hwdiv-arm,-i8mm,-neon,-sb,-sha2,-vfp3,-vfp3sp,-vfp4,-vfp4sp" "unsafe-fp-math"="true" }
220220
attributes #1 = { argmemonly nofree nosync nounwind willreturn }
221-
attributes #2 = { alwaysinline nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fullfp16,+hwdiv,+lob,+mve,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-fp-armv8,-fp-armv8sp,-fp16fml,-hwdiv-arm,-i8mm,-neon,-sb,-sha2,-vfp3,-vfp3sp,-vfp4,-vfp4sp" "unsafe-fp-math"="true" }
221+
attributes #2 = { nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fullfp16,+hwdiv,+lob,+mve,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-fp-armv8,-fp-armv8sp,-fp16fml,-hwdiv-arm,-i8mm,-neon,-sb,-sha2,-vfp3,-vfp3sp,-vfp4,-vfp4sp" "unsafe-fp-math"="true" }
222222
attributes #3 = { nounwind }

0 commit comments

Comments
 (0)