Backport from GCC mainline.
[platform/upstream/linaro-gcc.git] / gcc / passes.def
1 /* Description of pass structure
2    Copyright (C) 1987-2016 Free Software Foundation, Inc.
3
4 This file is part of GCC.
5
6 GCC is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 3, or (at your option) any later
9 version.
10
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3.  If not see
18 <http://www.gnu.org/licenses/>.  */
19
20 /*
21  Macros that should be defined when using this file:
22    INSERT_PASSES_AFTER (PASS)
23    PUSH_INSERT_PASSES_WITHIN (PASS)
24    POP_INSERT_PASSES ()
25    NEXT_PASS (PASS)
26    TERMINATE_PASS_LIST ()
27  */
28
29  /* All passes needed to lower the function into shape optimizers can
30     operate on.  These passes are always run first on the function, but
31     backend might produce already lowered functions that are not processed
32     by these passes.  */
33   INSERT_PASSES_AFTER (all_lowering_passes)
34   NEXT_PASS (pass_warn_unused_result);
35   NEXT_PASS (pass_diagnose_omp_blocks);
36   NEXT_PASS (pass_diagnose_tm_blocks);
37   NEXT_PASS (pass_lower_omp);
38   NEXT_PASS (pass_lower_cf);
39   NEXT_PASS (pass_lower_tm);
40   NEXT_PASS (pass_refactor_eh);
41   NEXT_PASS (pass_lower_eh);
42   NEXT_PASS (pass_build_cfg);
43   NEXT_PASS (pass_warn_function_return);
44   NEXT_PASS (pass_expand_omp);
45   NEXT_PASS (pass_build_cgraph_edges);
46   TERMINATE_PASS_LIST ()
47
48   /* Interprocedural optimization passes.  */
49   INSERT_PASSES_AFTER (all_small_ipa_passes)
50   NEXT_PASS (pass_ipa_free_lang_data);
51   NEXT_PASS (pass_ipa_function_and_variable_visibility);
52   NEXT_PASS (pass_ipa_chkp_versioning);
53   NEXT_PASS (pass_ipa_chkp_early_produce_thunks);
54   NEXT_PASS (pass_build_ssa_passes);
55   PUSH_INSERT_PASSES_WITHIN (pass_build_ssa_passes)
56       NEXT_PASS (pass_fixup_cfg);
57       NEXT_PASS (pass_init_datastructures);
58       NEXT_PASS (pass_build_ssa);
59       NEXT_PASS (pass_warn_nonnull_compare);
60       NEXT_PASS (pass_ubsan);
61       NEXT_PASS (pass_early_warn_uninitialized);
62       NEXT_PASS (pass_nothrow);
63   POP_INSERT_PASSES ()
64
65   NEXT_PASS (pass_chkp_instrumentation_passes);
66   PUSH_INSERT_PASSES_WITHIN (pass_chkp_instrumentation_passes)
67       NEXT_PASS (pass_fixup_cfg);
68       NEXT_PASS (pass_chkp);
69       NEXT_PASS (pass_rebuild_cgraph_edges);
70   POP_INSERT_PASSES ()
71
72   NEXT_PASS (pass_local_optimization_passes);
73   PUSH_INSERT_PASSES_WITHIN (pass_local_optimization_passes)
74       NEXT_PASS (pass_fixup_cfg);
75       NEXT_PASS (pass_rebuild_cgraph_edges);
76       NEXT_PASS (pass_inline_parameters);
77       NEXT_PASS (pass_early_inline);
78       NEXT_PASS (pass_all_early_optimizations);
79       PUSH_INSERT_PASSES_WITHIN (pass_all_early_optimizations)
80           NEXT_PASS (pass_remove_cgraph_callee_edges);
81           NEXT_PASS (pass_object_sizes, true /* insert_min_max_p */);
82           /* Don't record nonzero bits before IPA to avoid
83              using too much memory.  */
84           NEXT_PASS (pass_ccp, false /* nonzero_p */);
85           /* After CCP we rewrite no longer addressed locals into SSA
86              form if possible.  */
87           NEXT_PASS (pass_forwprop);
88           NEXT_PASS (pass_sra_early);
89           /* pass_build_ealias is a dummy pass that ensures that we
90              execute TODO_rebuild_alias at this point.  */
91           NEXT_PASS (pass_build_ealias);
92           NEXT_PASS (pass_fre);
93           NEXT_PASS (pass_merge_phi);
94           NEXT_PASS (pass_dse);
95           NEXT_PASS (pass_cd_dce);
96           NEXT_PASS (pass_early_ipa_sra);
97           NEXT_PASS (pass_tail_recursion);
98           NEXT_PASS (pass_convert_switch);
99           NEXT_PASS (pass_cleanup_eh);
100           NEXT_PASS (pass_profile);
101           NEXT_PASS (pass_local_pure_const);
102           /* Split functions creates parts that are not run through
103              early optimizations again.  It is thus good idea to do this
104               late.  */
105           NEXT_PASS (pass_split_functions);
106       POP_INSERT_PASSES ()
107       NEXT_PASS (pass_release_ssa_names);
108       NEXT_PASS (pass_rebuild_cgraph_edges);
109       NEXT_PASS (pass_inline_parameters);
110   POP_INSERT_PASSES ()
111
112   NEXT_PASS (pass_ipa_oacc);
113   PUSH_INSERT_PASSES_WITHIN (pass_ipa_oacc)
114       NEXT_PASS (pass_ipa_pta);
115       /* Pass group that runs when the function is an offloaded function
116          containing oacc kernels loops.  */
117       NEXT_PASS (pass_ipa_oacc_kernels);
118       PUSH_INSERT_PASSES_WITHIN (pass_ipa_oacc_kernels)
119           NEXT_PASS (pass_oacc_kernels);
120           PUSH_INSERT_PASSES_WITHIN (pass_oacc_kernels)
121               NEXT_PASS (pass_ch);
122               NEXT_PASS (pass_fre);
123               /* We use pass_lim to rewrite in-memory iteration and reduction
124                  variable accesses in loops into local variables accesses.  */
125               NEXT_PASS (pass_lim);
126               NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */);
127               NEXT_PASS (pass_dce);
128               NEXT_PASS (pass_parallelize_loops, true /* oacc_kernels_p */);
129               NEXT_PASS (pass_expand_omp_ssa);
130               NEXT_PASS (pass_rebuild_cgraph_edges);
131           POP_INSERT_PASSES ()
132       POP_INSERT_PASSES ()
133   POP_INSERT_PASSES ()
134
135   NEXT_PASS (pass_ipa_chkp_produce_thunks);
136   NEXT_PASS (pass_ipa_auto_profile);
137   NEXT_PASS (pass_ipa_free_inline_summary);
138   NEXT_PASS (pass_ipa_tree_profile);
139   PUSH_INSERT_PASSES_WITHIN (pass_ipa_tree_profile)
140       NEXT_PASS (pass_feedback_split_functions);
141   POP_INSERT_PASSES ()
142   NEXT_PASS (pass_ipa_increase_alignment);
143   NEXT_PASS (pass_ipa_tm);
144   NEXT_PASS (pass_ipa_lower_emutls);
145   TERMINATE_PASS_LIST ()
146
147   INSERT_PASSES_AFTER (all_regular_ipa_passes)
148   NEXT_PASS (pass_ipa_whole_program_visibility);
149   NEXT_PASS (pass_ipa_profile);
150   NEXT_PASS (pass_ipa_icf);
151   NEXT_PASS (pass_ipa_devirt);
152   NEXT_PASS (pass_ipa_cp);
153   NEXT_PASS (pass_ipa_cdtor_merge);
154   NEXT_PASS (pass_target_clone);
155   NEXT_PASS (pass_ipa_hsa);
156   NEXT_PASS (pass_ipa_inline);
157   NEXT_PASS (pass_ipa_pure_const);
158   NEXT_PASS (pass_ipa_reference);
159   /* This pass needs to be scheduled after any IP code duplication.   */
160   NEXT_PASS (pass_ipa_single_use);
161   /* Comdat privatization come last, as direct references to comdat local
162      symbols are not allowed outside of the comdat group.  Privatizing early
163      would result in missed optimizations due to this restriction.  */
164   NEXT_PASS (pass_ipa_comdats);
165   TERMINATE_PASS_LIST ()
166
167   /* Simple IPA passes executed after the regular passes.  In WHOPR mode the
168      passes are executed after partitioning and thus see just parts of the
169      compiled unit.  */
170   INSERT_PASSES_AFTER (all_late_ipa_passes)
171   NEXT_PASS (pass_ipa_pta);
172   NEXT_PASS (pass_dispatcher_calls);
173   NEXT_PASS (pass_omp_simd_clone);
174   TERMINATE_PASS_LIST ()
175
176   /* These passes are run after IPA passes on every function that is being
177      output to the assembler file.  */
178   INSERT_PASSES_AFTER (all_passes)
179   NEXT_PASS (pass_fixup_cfg);
180   NEXT_PASS (pass_lower_eh_dispatch);
181   NEXT_PASS (pass_oacc_device_lower);
182   NEXT_PASS (pass_omp_target_link);
183   NEXT_PASS (pass_all_optimizations);
184   PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations)
185       NEXT_PASS (pass_remove_cgraph_callee_edges);
186       /* Initial scalar cleanups before alias computation.
187          They ensure memory accesses are not indirect wherever possible.  */
188       NEXT_PASS (pass_strip_predict_hints);
189       NEXT_PASS (pass_ccp, true /* nonzero_p */);
190       /* After CCP we rewrite no longer addressed locals into SSA
191          form if possible.  */
192       NEXT_PASS (pass_complete_unrolli);
193       NEXT_PASS (pass_backprop);
194       NEXT_PASS (pass_phiprop);
195       NEXT_PASS (pass_forwprop);
196       NEXT_PASS (pass_object_sizes, false /* insert_min_max_p */);
197       /* pass_build_alias is a dummy pass that ensures that we
198          execute TODO_rebuild_alias at this point.  */
199       NEXT_PASS (pass_build_alias);
200       NEXT_PASS (pass_return_slot);
201       NEXT_PASS (pass_fre);
202       NEXT_PASS (pass_merge_phi);
203       NEXT_PASS (pass_vrp, true /* warn_array_bounds_p */);
204       NEXT_PASS (pass_chkp_opt);
205       NEXT_PASS (pass_dce);
206       NEXT_PASS (pass_stdarg);
207       NEXT_PASS (pass_call_cdce);
208       NEXT_PASS (pass_cselim);
209       NEXT_PASS (pass_copy_prop);
210       NEXT_PASS (pass_tree_ifcombine);
211       NEXT_PASS (pass_merge_phi);
212       NEXT_PASS (pass_phiopt);
213       NEXT_PASS (pass_tail_recursion);
214       NEXT_PASS (pass_ch);
215       NEXT_PASS (pass_lower_complex);
216       NEXT_PASS (pass_sra);
217       /* The dom pass will also resolve all __builtin_constant_p calls
218          that are still there to 0.  This has to be done after some
219          propagations have already run, but before some more dead code
220          is removed, and this place fits nicely.  Remember this when
221          trying to move or duplicate pass_dominator somewhere earlier.  */
222       NEXT_PASS (pass_dominator, true /* may_peel_loop_headers_p */);
223       /* At this point the majority of const/copy propagations
224          are exposed.  Go ahead and identify paths that should never
225          be executed in a conforming program and isolate those paths.
226
227          This will expose more degenerate PHIs in the main path and
228          expose more PRE/DOM optimization opportunities.  */
229       NEXT_PASS (pass_isolate_erroneous_paths);
230       /* The only const/copy propagation opportunities left after
231          DOM and erroneous path isolation should be due to degenerate PHI nodes.
232          So rather than run the full propagators, run a specialized pass which
233          only examines PHIs to discover const/copy propagation
234          opportunities.  */
235       NEXT_PASS (pass_phi_only_cprop);
236       NEXT_PASS (pass_dse);
237       NEXT_PASS (pass_reassoc, true /* insert_powi_p */);
238       NEXT_PASS (pass_dce);
239       NEXT_PASS (pass_forwprop);
240       NEXT_PASS (pass_phiopt);
241       NEXT_PASS (pass_ccp, true /* nonzero_p */);
242       /* After CCP we rewrite no longer addressed locals into SSA
243          form if possible.  */
244       NEXT_PASS (pass_cse_sincos);
245       NEXT_PASS (pass_optimize_bswap);
246       NEXT_PASS (pass_laddress);
247       NEXT_PASS (pass_split_crit_edges);
248       NEXT_PASS (pass_pre);
249       NEXT_PASS (pass_sink_code);
250       NEXT_PASS (pass_sancov);
251       NEXT_PASS (pass_asan);
252       NEXT_PASS (pass_tsan);
253       /* Pass group that runs when 1) enabled, 2) there are loops
254          in the function.  Make sure to run pass_fix_loops before
255          to discover/remove loops before running the gate function
256          of pass_tree_loop.  */
257       NEXT_PASS (pass_fix_loops);
258       NEXT_PASS (pass_tree_loop);
259       PUSH_INSERT_PASSES_WITHIN (pass_tree_loop)
260           NEXT_PASS (pass_tree_loop_init);
261           NEXT_PASS (pass_lim);
262           NEXT_PASS (pass_copy_prop);
263           NEXT_PASS (pass_dce);
264           NEXT_PASS (pass_tree_unswitch);
265           NEXT_PASS (pass_scev_cprop);
266           NEXT_PASS (pass_record_bounds);
267           NEXT_PASS (pass_loop_distribution);
268           NEXT_PASS (pass_copy_prop);
269           NEXT_PASS (pass_graphite);
270           PUSH_INSERT_PASSES_WITHIN (pass_graphite)
271               NEXT_PASS (pass_graphite_transforms);
272               NEXT_PASS (pass_lim);
273               NEXT_PASS (pass_copy_prop);
274               NEXT_PASS (pass_dce);
275           POP_INSERT_PASSES ()
276           NEXT_PASS (pass_iv_canon);
277           NEXT_PASS (pass_parallelize_loops, false /* oacc_kernels_p */);
278           NEXT_PASS (pass_expand_omp_ssa);
279           NEXT_PASS (pass_ch_vect);
280           NEXT_PASS (pass_if_conversion);
281           /* pass_vectorize must immediately follow pass_if_conversion.
282              Please do not add any other passes in between.  */
283           NEXT_PASS (pass_vectorize);
284           PUSH_INSERT_PASSES_WITHIN (pass_vectorize)
285               NEXT_PASS (pass_dce);
286           POP_INSERT_PASSES ()
287           NEXT_PASS (pass_predcom);
288           NEXT_PASS (pass_complete_unroll);
289           NEXT_PASS (pass_slp_vectorize);
290           NEXT_PASS (pass_loop_prefetch);
291           /* Run IVOPTs after the last pass that uses data-reference analysis
292              as that doesn't handle TARGET_MEM_REFs.  */
293           NEXT_PASS (pass_iv_optimize);
294           NEXT_PASS (pass_lim);
295           NEXT_PASS (pass_tree_loop_done);
296       POP_INSERT_PASSES ()
297       /* Pass group that runs when pass_tree_loop is disabled or there
298          are no loops in the function.  */
299       NEXT_PASS (pass_tree_no_loop);
300       PUSH_INSERT_PASSES_WITHIN (pass_tree_no_loop)
301           NEXT_PASS (pass_slp_vectorize);
302       POP_INSERT_PASSES ()
303       NEXT_PASS (pass_simduid_cleanup);
304       NEXT_PASS (pass_lower_vector_ssa);
305       NEXT_PASS (pass_cse_reciprocals);
306       NEXT_PASS (pass_reassoc, false /* insert_powi_p */);
307       NEXT_PASS (pass_strength_reduction);
308       NEXT_PASS (pass_split_paths);
309       NEXT_PASS (pass_tracer);
310       NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */);
311       NEXT_PASS (pass_strlen);
312       NEXT_PASS (pass_vrp, false /* warn_array_bounds_p */);
313       /* The only const/copy propagation opportunities left after
314          DOM and VRP should be due to degenerate PHI nodes.  So rather than
315          run the full propagators, run a specialized pass which
316          only examines PHIs to discover const/copy propagation
317          opportunities.  */
318       NEXT_PASS (pass_phi_only_cprop);
319       NEXT_PASS (pass_cd_dce);
320       NEXT_PASS (pass_dse);
321       NEXT_PASS (pass_forwprop);
322       NEXT_PASS (pass_phiopt);
323       NEXT_PASS (pass_fold_builtins);
324       NEXT_PASS (pass_optimize_widening_mul);
325       NEXT_PASS (pass_tail_calls);
326       /* If DCE is not run before checking for uninitialized uses,
327          we may get false warnings (e.g., testsuite/gcc.dg/uninit-5.c).
328          However, this also causes us to misdiagnose cases that should be
329          real warnings (e.g., testsuite/gcc.dg/pr18501.c).  */
330       NEXT_PASS (pass_dce);
331       /* Split critical edges before late uninit warning to reduce the
332          number of false positives from it.  */
333       NEXT_PASS (pass_split_crit_edges);
334       NEXT_PASS (pass_late_warn_uninitialized);
335       NEXT_PASS (pass_uncprop);
336       NEXT_PASS (pass_local_pure_const);
337   POP_INSERT_PASSES ()
338   NEXT_PASS (pass_all_optimizations_g);
339   PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations_g)
340       NEXT_PASS (pass_remove_cgraph_callee_edges);
341       NEXT_PASS (pass_strip_predict_hints);
342       /* Lower remaining pieces of GIMPLE.  */
343       NEXT_PASS (pass_lower_complex);
344       NEXT_PASS (pass_lower_vector_ssa);
345       /* Perform simple scalar cleanup which is constant/copy propagation.  */
346       NEXT_PASS (pass_ccp, true /* nonzero_p */);
347       NEXT_PASS (pass_object_sizes);
348       /* Fold remaining builtins.  */
349       NEXT_PASS (pass_fold_builtins);
350       /* Copy propagation also copy-propagates constants, this is necessary
351          to forward object-size and builtin folding results properly.  */
352       NEXT_PASS (pass_copy_prop);
353       NEXT_PASS (pass_dce);
354       NEXT_PASS (pass_sancov);
355       NEXT_PASS (pass_asan);
356       NEXT_PASS (pass_tsan);
357       /* ???  We do want some kind of loop invariant motion, but we possibly
358          need to adjust LIM to be more friendly towards preserving accurate
359          debug information here.  */
360       /* Split critical edges before late uninit warning to reduce the
361          number of false positives from it.  */
362       NEXT_PASS (pass_split_crit_edges);
363       NEXT_PASS (pass_late_warn_uninitialized);
364       NEXT_PASS (pass_uncprop);
365       NEXT_PASS (pass_local_pure_const);
366   POP_INSERT_PASSES ()
367   NEXT_PASS (pass_tm_init);
368   PUSH_INSERT_PASSES_WITHIN (pass_tm_init)
369       NEXT_PASS (pass_tm_mark);
370       NEXT_PASS (pass_tm_memopt);
371       NEXT_PASS (pass_tm_edges);
372   POP_INSERT_PASSES ()
373   NEXT_PASS (pass_simduid_cleanup);
374   NEXT_PASS (pass_vtable_verify);
375   NEXT_PASS (pass_lower_vaarg);
376   NEXT_PASS (pass_lower_vector);
377   NEXT_PASS (pass_lower_complex_O0);
378   NEXT_PASS (pass_sancov_O0);
379   NEXT_PASS (pass_asan_O0);
380   NEXT_PASS (pass_tsan_O0);
381   NEXT_PASS (pass_sanopt);
382   NEXT_PASS (pass_cleanup_eh);
383   NEXT_PASS (pass_lower_resx);
384   NEXT_PASS (pass_nrv);
385   NEXT_PASS (pass_cleanup_cfg_post_optimizing);
386   NEXT_PASS (pass_warn_function_noreturn);
387   NEXT_PASS (pass_gen_hsail);
388
389   NEXT_PASS (pass_expand);
390
391   NEXT_PASS (pass_rest_of_compilation);
392   PUSH_INSERT_PASSES_WITHIN (pass_rest_of_compilation)
393       NEXT_PASS (pass_instantiate_virtual_regs);
394       NEXT_PASS (pass_into_cfg_layout_mode);
395       NEXT_PASS (pass_jump);
396       NEXT_PASS (pass_lower_subreg);
397       NEXT_PASS (pass_df_initialize_opt);
398       NEXT_PASS (pass_cse);
399       NEXT_PASS (pass_rtl_fwprop);
400       NEXT_PASS (pass_rtl_cprop);
401       NEXT_PASS (pass_rtl_pre);
402       NEXT_PASS (pass_rtl_hoist);
403       NEXT_PASS (pass_rtl_cprop);
404       NEXT_PASS (pass_rtl_store_motion);
405       NEXT_PASS (pass_cse_after_global_opts);
406       NEXT_PASS (pass_rtl_ifcvt);
407       NEXT_PASS (pass_reginfo_init);
408       /* Perform loop optimizations.  It might be better to do them a bit
409          sooner, but we want the profile feedback to work more
410          efficiently.  */
411       NEXT_PASS (pass_loop2);
412       PUSH_INSERT_PASSES_WITHIN (pass_loop2)
413           NEXT_PASS (pass_rtl_loop_init);
414           NEXT_PASS (pass_rtl_move_loop_invariants);
415           NEXT_PASS (pass_rtl_unroll_loops);
416           NEXT_PASS (pass_rtl_doloop);
417           NEXT_PASS (pass_rtl_loop_done);
418       POP_INSERT_PASSES ()
419       NEXT_PASS (pass_web);
420       NEXT_PASS (pass_rtl_cprop);
421       NEXT_PASS (pass_cse2);
422       NEXT_PASS (pass_rtl_dse1);
423       NEXT_PASS (pass_rtl_fwprop_addr);
424       NEXT_PASS (pass_inc_dec);
425       NEXT_PASS (pass_initialize_regs);
426       NEXT_PASS (pass_ud_rtl_dce);
427       NEXT_PASS (pass_combine);
428       NEXT_PASS (pass_if_after_combine);
429       NEXT_PASS (pass_partition_blocks);
430       NEXT_PASS (pass_outof_cfg_layout_mode);
431       NEXT_PASS (pass_split_all_insns);
432       NEXT_PASS (pass_lower_subreg2);
433       NEXT_PASS (pass_df_initialize_no_opt);
434       NEXT_PASS (pass_stack_ptr_mod);
435       NEXT_PASS (pass_mode_switching);
436       NEXT_PASS (pass_match_asm_constraints);
437       NEXT_PASS (pass_sms);
438       NEXT_PASS (pass_live_range_shrinkage);
439       NEXT_PASS (pass_sched);
440       NEXT_PASS (pass_ira);
441       NEXT_PASS (pass_reload);
442       NEXT_PASS (pass_postreload);
443       PUSH_INSERT_PASSES_WITHIN (pass_postreload)
444           NEXT_PASS (pass_postreload_cse);
445           NEXT_PASS (pass_gcse2);
446           NEXT_PASS (pass_split_after_reload);
447           NEXT_PASS (pass_ree);
448           NEXT_PASS (pass_compare_elim_after_reload);
449           NEXT_PASS (pass_branch_target_load_optimize1);
450           NEXT_PASS (pass_thread_prologue_and_epilogue);
451           NEXT_PASS (pass_rtl_dse2);
452           NEXT_PASS (pass_stack_adjustments);
453           NEXT_PASS (pass_jump2);
454           NEXT_PASS (pass_duplicate_computed_gotos);
455           NEXT_PASS (pass_sched_fusion);
456           NEXT_PASS (pass_peephole2);
457           NEXT_PASS (pass_if_after_reload);
458           NEXT_PASS (pass_regrename);
459           NEXT_PASS (pass_cprop_hardreg);
460           NEXT_PASS (pass_fast_rtl_dce);
461           NEXT_PASS (pass_reorder_blocks);
462           NEXT_PASS (pass_branch_target_load_optimize2);
463           NEXT_PASS (pass_leaf_regs);
464           NEXT_PASS (pass_split_before_sched2);
465           NEXT_PASS (pass_sched2);
466           NEXT_PASS (pass_stack_regs);
467           PUSH_INSERT_PASSES_WITHIN (pass_stack_regs)
468               NEXT_PASS (pass_split_before_regstack);
469               NEXT_PASS (pass_stack_regs_run);
470           POP_INSERT_PASSES ()
471       POP_INSERT_PASSES ()
472       NEXT_PASS (pass_late_compilation);
473       PUSH_INSERT_PASSES_WITHIN (pass_late_compilation)
474           NEXT_PASS (pass_compute_alignments);
475           NEXT_PASS (pass_variable_tracking);
476           NEXT_PASS (pass_free_cfg);
477           NEXT_PASS (pass_machine_reorg);
478           NEXT_PASS (pass_cleanup_barriers);
479           NEXT_PASS (pass_delay_slots);
480           NEXT_PASS (pass_split_for_shorten_branches);
481           NEXT_PASS (pass_convert_to_eh_region_ranges);
482           NEXT_PASS (pass_shorten_branches);
483           NEXT_PASS (pass_set_nothrow_function_flags);
484           NEXT_PASS (pass_dwarf2_frame);
485           NEXT_PASS (pass_final);
486       POP_INSERT_PASSES ()
487       NEXT_PASS (pass_df_finish);
488   POP_INSERT_PASSES ()
489   NEXT_PASS (pass_clean_state);
490   TERMINATE_PASS_LIST ()