source: arduino-1-6-7/trunk/fuentes/arduino-ide-amd64/hardware/tools/avr/lib/gcc/avr/4.9.2/plugin/include/pass-instances.def @ 4837

Last change on this file since 4837 was 4837, checked in by daduve, 2 years ago

Adding new version

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