aarch64 - Set the mode for the unspec in speculation_tracker insn.
[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       NEXT_PASS (pass_esan);
254       /* Pass group that runs when 1) enabled, 2) there are loops
255          in the function.  Make sure to run pass_fix_loops before
256          to discover/remove loops before running the gate function
257          of pass_tree_loop.  */
258       NEXT_PASS (pass_fix_loops);
259       NEXT_PASS (pass_tree_loop);
260       PUSH_INSERT_PASSES_WITHIN (pass_tree_loop)
261           NEXT_PASS (pass_tree_loop_init);
262           NEXT_PASS (pass_lim);
263           NEXT_PASS (pass_copy_prop);
264           NEXT_PASS (pass_dce);
265           NEXT_PASS (pass_tree_unswitch);
266           NEXT_PASS (pass_scev_cprop);
267           NEXT_PASS (pass_record_bounds);
268           NEXT_PASS (pass_loop_distribution);
269           NEXT_PASS (pass_copy_prop);
270           NEXT_PASS (pass_graphite);
271           PUSH_INSERT_PASSES_WITHIN (pass_graphite)
272               NEXT_PASS (pass_graphite_transforms);
273               NEXT_PASS (pass_lim);
274               NEXT_PASS (pass_copy_prop);
275               NEXT_PASS (pass_dce);
276           POP_INSERT_PASSES ()
277           NEXT_PASS (pass_iv_canon);
278           NEXT_PASS (pass_parallelize_loops, false /* oacc_kernels_p */);
279           NEXT_PASS (pass_expand_omp_ssa);
280           NEXT_PASS (pass_ch_vect);
281           NEXT_PASS (pass_if_conversion);
282           /* pass_vectorize must immediately follow pass_if_conversion.
283              Please do not add any other passes in between.  */
284           NEXT_PASS (pass_vectorize);
285           PUSH_INSERT_PASSES_WITHIN (pass_vectorize)
286               NEXT_PASS (pass_dce);
287           POP_INSERT_PASSES ()
288           NEXT_PASS (pass_predcom);
289           NEXT_PASS (pass_complete_unroll);
290           NEXT_PASS (pass_slp_vectorize);
291           NEXT_PASS (pass_loop_prefetch);
292           /* Run IVOPTs after the last pass that uses data-reference analysis
293              as that doesn't handle TARGET_MEM_REFs.  */
294           NEXT_PASS (pass_iv_optimize);
295           NEXT_PASS (pass_lim);
296           NEXT_PASS (pass_tree_loop_done);
297       POP_INSERT_PASSES ()
298       /* Pass group that runs when pass_tree_loop is disabled or there
299          are no loops in the function.  */
300       NEXT_PASS (pass_tree_no_loop);
301       PUSH_INSERT_PASSES_WITHIN (pass_tree_no_loop)
302           NEXT_PASS (pass_slp_vectorize);
303       POP_INSERT_PASSES ()
304       NEXT_PASS (pass_simduid_cleanup);
305       NEXT_PASS (pass_lower_vector_ssa);
306       NEXT_PASS (pass_cse_reciprocals);
307       NEXT_PASS (pass_reassoc, false /* insert_powi_p */);
308       NEXT_PASS (pass_strength_reduction);
309       NEXT_PASS (pass_split_paths);
310       NEXT_PASS (pass_tracer);
311       NEXT_PASS (pass_dominator, false /* may_peel_loop_headers_p */);
312       NEXT_PASS (pass_strlen);
313       NEXT_PASS (pass_vrp, false /* warn_array_bounds_p */);
314       /* The only const/copy propagation opportunities left after
315          DOM and VRP should be due to degenerate PHI nodes.  So rather than
316          run the full propagators, run a specialized pass which
317          only examines PHIs to discover const/copy propagation
318          opportunities.  */
319       NEXT_PASS (pass_phi_only_cprop);
320       NEXT_PASS (pass_cd_dce);
321       NEXT_PASS (pass_dse);
322       NEXT_PASS (pass_forwprop);
323       NEXT_PASS (pass_phiopt);
324       NEXT_PASS (pass_fold_builtins);
325       NEXT_PASS (pass_optimize_widening_mul);
326       NEXT_PASS (pass_tail_calls);
327       /* If DCE is not run before checking for uninitialized uses,
328          we may get false warnings (e.g., testsuite/gcc.dg/uninit-5.c).
329          However, this also causes us to misdiagnose cases that should be
330          real warnings (e.g., testsuite/gcc.dg/pr18501.c).  */
331       NEXT_PASS (pass_dce);
332       /* Split critical edges before late uninit warning to reduce the
333          number of false positives from it.  */
334       NEXT_PASS (pass_split_crit_edges);
335       NEXT_PASS (pass_late_warn_uninitialized);
336       NEXT_PASS (pass_uncprop);
337       NEXT_PASS (pass_local_pure_const);
338   POP_INSERT_PASSES ()
339   NEXT_PASS (pass_all_optimizations_g);
340   PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations_g)
341       NEXT_PASS (pass_remove_cgraph_callee_edges);
342       NEXT_PASS (pass_strip_predict_hints);
343       /* Lower remaining pieces of GIMPLE.  */
344       NEXT_PASS (pass_lower_complex);
345       NEXT_PASS (pass_lower_vector_ssa);
346       /* Perform simple scalar cleanup which is constant/copy propagation.  */
347       NEXT_PASS (pass_ccp, true /* nonzero_p */);
348       NEXT_PASS (pass_object_sizes);
349       /* Fold remaining builtins.  */
350       NEXT_PASS (pass_fold_builtins);
351       /* Copy propagation also copy-propagates constants, this is necessary
352          to forward object-size and builtin folding results properly.  */
353       NEXT_PASS (pass_copy_prop);
354       NEXT_PASS (pass_dce);
355       NEXT_PASS (pass_sancov);
356       NEXT_PASS (pass_asan);
357       NEXT_PASS (pass_tsan);
358       NEXT_PASS (pass_esan);
359       /* ???  We do want some kind of loop invariant motion, but we possibly
360          need to adjust LIM to be more friendly towards preserving accurate
361          debug information here.  */
362       /* Split critical edges before late uninit warning to reduce the
363          number of false positives from it.  */
364       NEXT_PASS (pass_split_crit_edges);
365       NEXT_PASS (pass_late_warn_uninitialized);
366       NEXT_PASS (pass_uncprop);
367       NEXT_PASS (pass_local_pure_const);
368   POP_INSERT_PASSES ()
369   NEXT_PASS (pass_tm_init);
370   PUSH_INSERT_PASSES_WITHIN (pass_tm_init)
371       NEXT_PASS (pass_tm_mark);
372       NEXT_PASS (pass_tm_memopt);
373       NEXT_PASS (pass_tm_edges);
374   POP_INSERT_PASSES ()
375   NEXT_PASS (pass_simduid_cleanup);
376   NEXT_PASS (pass_vtable_verify);
377   NEXT_PASS (pass_lower_vaarg);
378   NEXT_PASS (pass_lower_vector);
379   NEXT_PASS (pass_lower_complex_O0);
380   NEXT_PASS (pass_sancov_O0);
381   NEXT_PASS (pass_asan_O0);
382   NEXT_PASS (pass_tsan_O0);
383   NEXT_PASS (pass_esan_O0);
384   NEXT_PASS (pass_sanopt);
385   NEXT_PASS (pass_cleanup_eh);
386   NEXT_PASS (pass_lower_resx);
387   NEXT_PASS (pass_nrv);
388   NEXT_PASS (pass_cleanup_cfg_post_optimizing);
389   NEXT_PASS (pass_warn_function_noreturn);
390   NEXT_PASS (pass_gen_hsail);
391
392   NEXT_PASS (pass_expand);
393
394   NEXT_PASS (pass_rest_of_compilation);
395   PUSH_INSERT_PASSES_WITHIN (pass_rest_of_compilation)
396       NEXT_PASS (pass_instantiate_virtual_regs);
397       NEXT_PASS (pass_into_cfg_layout_mode);
398       NEXT_PASS (pass_jump);
399       NEXT_PASS (pass_lower_subreg);
400       NEXT_PASS (pass_df_initialize_opt);
401       NEXT_PASS (pass_cse);
402       NEXT_PASS (pass_rtl_fwprop);
403       NEXT_PASS (pass_rtl_cprop);
404       NEXT_PASS (pass_rtl_pre);
405       NEXT_PASS (pass_rtl_hoist);
406       NEXT_PASS (pass_rtl_cprop);
407       NEXT_PASS (pass_rtl_store_motion);
408       NEXT_PASS (pass_cse_after_global_opts);
409       NEXT_PASS (pass_rtl_ifcvt);
410       NEXT_PASS (pass_reginfo_init);
411       /* Perform loop optimizations.  It might be better to do them a bit
412          sooner, but we want the profile feedback to work more
413          efficiently.  */
414       NEXT_PASS (pass_loop2);
415       PUSH_INSERT_PASSES_WITHIN (pass_loop2)
416           NEXT_PASS (pass_rtl_loop_init);
417           NEXT_PASS (pass_rtl_move_loop_invariants);
418           NEXT_PASS (pass_rtl_unroll_loops);
419           NEXT_PASS (pass_rtl_doloop);
420           NEXT_PASS (pass_rtl_loop_done);
421       POP_INSERT_PASSES ()
422       NEXT_PASS (pass_web);
423       NEXT_PASS (pass_rtl_cprop);
424       NEXT_PASS (pass_cse2);
425       NEXT_PASS (pass_rtl_dse1);
426       NEXT_PASS (pass_rtl_fwprop_addr);
427       NEXT_PASS (pass_inc_dec);
428       NEXT_PASS (pass_initialize_regs);
429       NEXT_PASS (pass_ud_rtl_dce);
430       NEXT_PASS (pass_combine);
431       NEXT_PASS (pass_if_after_combine);
432       NEXT_PASS (pass_partition_blocks);
433       NEXT_PASS (pass_outof_cfg_layout_mode);
434       NEXT_PASS (pass_split_all_insns);
435       NEXT_PASS (pass_lower_subreg2);
436       NEXT_PASS (pass_df_initialize_no_opt);
437       NEXT_PASS (pass_stack_ptr_mod);
438       NEXT_PASS (pass_mode_switching);
439       NEXT_PASS (pass_match_asm_constraints);
440       NEXT_PASS (pass_sms);
441       NEXT_PASS (pass_live_range_shrinkage);
442       NEXT_PASS (pass_sched);
443       NEXT_PASS (pass_ira);
444       NEXT_PASS (pass_reload);
445       NEXT_PASS (pass_postreload);
446       PUSH_INSERT_PASSES_WITHIN (pass_postreload)
447           NEXT_PASS (pass_postreload_cse);
448           NEXT_PASS (pass_gcse2);
449           NEXT_PASS (pass_split_after_reload);
450           NEXT_PASS (pass_ree);
451           NEXT_PASS (pass_compare_elim_after_reload);
452           NEXT_PASS (pass_branch_target_load_optimize1);
453           NEXT_PASS (pass_thread_prologue_and_epilogue);
454           NEXT_PASS (pass_rtl_dse2);
455           NEXT_PASS (pass_stack_adjustments);
456           NEXT_PASS (pass_jump2);
457           NEXT_PASS (pass_duplicate_computed_gotos);
458           NEXT_PASS (pass_sched_fusion);
459           NEXT_PASS (pass_peephole2);
460           NEXT_PASS (pass_if_after_reload);
461           NEXT_PASS (pass_regrename);
462           NEXT_PASS (pass_cprop_hardreg);
463           NEXT_PASS (pass_fast_rtl_dce);
464           NEXT_PASS (pass_reorder_blocks);
465           NEXT_PASS (pass_branch_target_load_optimize2);
466           NEXT_PASS (pass_leaf_regs);
467           NEXT_PASS (pass_split_before_sched2);
468           NEXT_PASS (pass_sched2);
469           NEXT_PASS (pass_stack_regs);
470           PUSH_INSERT_PASSES_WITHIN (pass_stack_regs)
471               NEXT_PASS (pass_split_before_regstack);
472               NEXT_PASS (pass_stack_regs_run);
473           POP_INSERT_PASSES ()
474       POP_INSERT_PASSES ()
475       NEXT_PASS (pass_late_compilation);
476       PUSH_INSERT_PASSES_WITHIN (pass_late_compilation)
477           NEXT_PASS (pass_compute_alignments);
478           NEXT_PASS (pass_variable_tracking);
479           NEXT_PASS (pass_free_cfg);
480           NEXT_PASS (pass_machine_reorg);
481           NEXT_PASS (pass_cleanup_barriers);
482           NEXT_PASS (pass_delay_slots);
483           NEXT_PASS (pass_split_for_shorten_branches);
484           NEXT_PASS (pass_convert_to_eh_region_ranges);
485           NEXT_PASS (pass_shorten_branches);
486           NEXT_PASS (pass_set_nothrow_function_flags);
487           NEXT_PASS (pass_dwarf2_frame);
488           NEXT_PASS (pass_final);
489       POP_INSERT_PASSES ()
490       NEXT_PASS (pass_df_finish);
491   POP_INSERT_PASSES ()
492   NEXT_PASS (pass_clean_state);
493   TERMINATE_PASS_LIST ()