@@ -38,9 +38,10 @@ function buildNewPMPipeline!(mpm, @nospecialize(job::CompilerJob), opt_level=2)
38
38
add! (mpm, NewPMFunctionPassManager) do fpm
39
39
buildLoopOptimizerPipeline (fpm, job, opt_level)
40
40
buildScalarOptimizerPipeline (fpm, job, opt_level)
41
- if false && opt_level >= 2
41
+ if uses_julia_runtime (job) && opt_level >= 2
42
42
# XXX : we disable vectorization, as this generally isn't useful for GPU targets
43
43
# and actually causes issues with some back-end compilers (like Metal).
44
+ # TODO : Make this not dependent on `uses_julia_runtime` (likely CPU), but it's own control
44
45
buildVectorPipeline (fpm, job, opt_level)
45
46
end
46
47
if isdebug (:optim )
112
113
113
114
function buildLoopOptimizerPipeline (fpm, @nospecialize (job:: CompilerJob ), opt_level)
114
115
add! (fpm, NewPMLoopPassManager) do lpm
116
+ # TODO LowerSIMDLoopPass
117
+ # LoopPass since JuliaLang/julia#51883
115
118
if opt_level >= 2
116
119
add! (lpm, LoopRotatePass ())
117
120
end
@@ -121,7 +124,7 @@ function buildLoopOptimizerPipeline(fpm, @nospecialize(job::CompilerJob), opt_le
121
124
add! (fpm, NewPMLoopPassManager, #= UseMemorySSA=# true ) do lpm
122
125
add! (lpm, LICMPass ())
123
126
add! (lpm, JuliaLICMPass ())
124
- add! (lpm, SimpleLoopUnswitchPass ())
127
+ add! (lpm, SimpleLoopUnswitchPass (SimpleLoopUnswitchPassOptions (nontrivial = true , trivial = true ) ))
125
128
add! (lpm, LICMPass ())
126
129
add! (lpm, JuliaLICMPass ())
127
130
end
@@ -186,23 +189,41 @@ function buildVectorPipeline(fpm, @nospecialize(job::CompilerJob), opt_level)
186
189
end
187
190
188
191
function buildIntrinsicLoweringPipeline (mpm, @nospecialize (job:: CompilerJob ), opt_level)
189
- # lower exception handling
190
- if uses_julia_runtime (job)
192
+ add! (mpm, RemoveNIPass ())
193
+
194
+ # lower GC intrinsics
195
+ add! (mpm, NewPMFunctionPassManager) do fpm
196
+ if ! uses_julia_runtime (job)
197
+ add! (legacy2newpm (lower_gc_frame!), fpm)
198
+ end
199
+ end
200
+
201
+ # lower kernel state intrinsics
202
+ # NOTE: we can only do so here, as GC lowering can introduce calls to the runtime,
203
+ # and thus additional uses of the kernel state intrinsics.
204
+ if job. config. kernel
205
+ # TODO : now that all kernel state-related passes are being run here, merge some?
206
+ add! (legacy2newpm (add_kernel_state!), mpm)
191
207
add! (mpm, NewPMFunctionPassManager) do fpm
192
- add! (fpm, LowerExcHandlersPass () )
208
+ add! (legacy2newpm (lower_kernel_state!), fpm )
193
209
end
210
+ add! (legacy2newpm (cleanup_kernel_state!), mpm)
194
211
end
195
212
196
- add! (mpm, NewPMFunctionPassManager) do fpm
197
- add! (fpm, GCInvariantVerifierPass ())
213
+ if ! uses_julia_runtime (job)
214
+ # remove dead uses of ptls
215
+ add! (mpm, NewPMFunctionPassManager) do fpm
216
+ add! (fpm, ADCEPass ())
217
+ end
218
+ add! (legacy2newpm (lower_ptls!), mpm)
198
219
end
199
- add! (mpm, RemoveNIPass ())
200
220
201
- # lower GC intrinsics
202
221
add! (mpm, NewPMFunctionPassManager) do fpm
203
- if ! uses_julia_runtime (job)
204
- add! (legacy2newpm (lower_gc_frame!), fpm)
222
+ # lower exception handling
223
+ if uses_julia_runtime (job)
224
+ add! (fpm, LowerExcHandlersPass ())
205
225
end
226
+ add! (fpm, GCInvariantVerifierPass ())
206
227
add! (fpm, LateLowerGCPass ())
207
228
if uses_julia_runtime (job) && VERSION >= v " 1.11.0-DEV.208"
208
229
add! (fpm, FinalLowerGCPass ())
@@ -220,27 +241,9 @@ function buildIntrinsicLoweringPipeline(mpm, @nospecialize(job::CompilerJob), op
220
241
end
221
242
end
222
243
223
- # lower kernel state intrinsics
224
- # NOTE: we can only do so here, as GC lowering can introduce calls to the runtime,
225
- # and thus additional uses of the kernel state intrinsics.
226
- if job. config. kernel
227
- # TODO : now that all kernel state-related passes are being run here, merge some?
228
- add! (legacy2newpm (add_kernel_state!), mpm)
229
- add! (mpm, NewPMFunctionPassManager) do fpm
230
- add! (legacy2newpm (lower_kernel_state!), fpm)
231
- end
232
- add! (legacy2newpm (cleanup_kernel_state!), mpm)
233
- end
234
-
235
244
# lower PTLS intrinsics
236
245
if uses_julia_runtime (job)
237
246
add! (mpm, LowerPTLSPass ())
238
- else
239
- # remove dead uses of ptls
240
- add! (mpm, NewPMFunctionPassManager) do fpm
241
- add! (fpm, ADCEPass ())
242
- end
243
- add! (legacy2newpm (lower_ptls!), mpm)
244
247
end
245
248
246
249
if opt_level >= 1
0 commit comments