/* This file is auto-generated by gen-pass-instances.awk
   from passes.def.  */
/* Description of pass structure
   Copyright (C) 1987-2014 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */

/*
 Macros that should be defined when using this file:
   INSERT_PASSES_AFTER (PASS)
   PUSH_INSERT_PASSES_WITHIN (PASS)
   POP_INSERT_PASSES ()
   NEXT_PASS (PASS, 1)
   TERMINATE_PASS_LIST ()
 */

 /* All passes needed to lower the function into shape optimizers can
    operate on.  These passes are always run first on the function, but
    backend might produce already lowered functions that are not processed
    by these passes.  */
  INSERT_PASSES_AFTER (all_lowering_passes)
  NEXT_PASS (pass_warn_unused_result, 1);
  NEXT_PASS (pass_diagnose_omp_blocks, 1);
  NEXT_PASS (pass_diagnose_tm_blocks, 1);
  NEXT_PASS (pass_lower_omp, 1);
  NEXT_PASS (pass_lower_cf, 1);
  NEXT_PASS (pass_lower_tm, 1);
  NEXT_PASS (pass_refactor_eh, 1);
  NEXT_PASS (pass_lower_eh, 1);
  NEXT_PASS (pass_build_cfg, 1);
  NEXT_PASS (pass_warn_function_return, 1);
  NEXT_PASS (pass_expand_omp, 1);
  NEXT_PASS (pass_build_cgraph_edges, 1);
  TERMINATE_PASS_LIST ()

  /* Interprocedural optimization passes.  */
  INSERT_PASSES_AFTER (all_small_ipa_passes)
  NEXT_PASS (pass_ipa_free_lang_data, 1);
  NEXT_PASS (pass_ipa_function_and_variable_visibility, 1);
  NEXT_PASS (pass_early_local_passes, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_early_local_passes)
      NEXT_PASS (pass_fixup_cfg, 1);
      NEXT_PASS (pass_init_datastructures, 1);

      NEXT_PASS (pass_build_ssa, 1);
      NEXT_PASS (pass_ubsan, 1);
      NEXT_PASS (pass_early_warn_uninitialized, 1);
      NEXT_PASS (pass_rebuild_cgraph_edges, 1);
      NEXT_PASS (pass_inline_parameters, 1);
      NEXT_PASS (pass_early_inline, 1);
      NEXT_PASS (pass_all_early_optimizations, 1);
      PUSH_INSERT_PASSES_WITHIN (pass_all_early_optimizations)
	  NEXT_PASS (pass_remove_cgraph_callee_edges, 1);
	  NEXT_PASS (pass_rename_ssa_copies, 1);
	  NEXT_PASS (pass_ccp, 1);
	  /* After CCP we rewrite no longer addressed locals into SSA
	     form if possible.  */
	  NEXT_PASS (pass_forwprop, 1);
	  /* pass_build_ealias is a dummy pass that ensures that we
	     execute TODO_rebuild_alias at this point.  */
	  NEXT_PASS (pass_build_ealias, 1);
	  NEXT_PASS (pass_sra_early, 1);
	  NEXT_PASS (pass_fre, 1);
	  NEXT_PASS (pass_copy_prop, 1);
	  NEXT_PASS (pass_merge_phi, 1);
          NEXT_PASS (pass_profile, 1);
	  NEXT_PASS (pass_early_vrp, 1);
	  NEXT_PASS (pass_cd_dce, 1);
	  NEXT_PASS (pass_early_ipa_sra, 1);
	  NEXT_PASS (pass_tail_recursion, 1);
	  NEXT_PASS (pass_convert_switch, 1);
          NEXT_PASS (pass_cleanup_eh, 1);
          NEXT_PASS (pass_local_pure_const, 1);
	  /* Split functions creates parts that are not run through
	     early optimizations again.  It is thus good idea to do this
	     late.  */
          NEXT_PASS (pass_split_functions, 1);
      POP_INSERT_PASSES ()
      NEXT_PASS (pass_release_ssa_names, 1);
      NEXT_PASS (pass_rebuild_cgraph_edges, 2);
      NEXT_PASS (pass_inline_parameters, 2);
  POP_INSERT_PASSES ()
  NEXT_PASS (pass_ipa_auto_profile, 1);
  NEXT_PASS (pass_ipa_free_inline_summary, 1);
  NEXT_PASS (pass_ipa_tree_profile, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_ipa_tree_profile)
      NEXT_PASS (pass_feedback_split_functions, 1);
  POP_INSERT_PASSES ()
  NEXT_PASS (pass_ipa_increase_alignment, 1);
  NEXT_PASS (pass_ipa_tm, 1);
  NEXT_PASS (pass_ipa_lower_emutls, 1);
  TERMINATE_PASS_LIST ()

  INSERT_PASSES_AFTER (all_regular_ipa_passes)
  NEXT_PASS (pass_ipa_whole_program_visibility, 1);
  NEXT_PASS (pass_ipa_profile, 1);
  NEXT_PASS (pass_ipa_devirt, 1);
  NEXT_PASS (pass_ipa_cp, 1);
  NEXT_PASS (pass_ipa_cdtor_merge, 1);
  NEXT_PASS (pass_ipa_inline, 1);
  NEXT_PASS (pass_ipa_pure_const, 1);
  NEXT_PASS (pass_ipa_reference, 1);
  TERMINATE_PASS_LIST ()

  /* Simple IPA passes executed after the regular passes.  In WHOPR mode the
     passes are executed after partitioning and thus see just parts of the
     compiled unit.  */
  INSERT_PASSES_AFTER (all_late_ipa_passes)
  NEXT_PASS (pass_ipa_pta, 1);
  NEXT_PASS (pass_omp_simd_clone, 1);
  TERMINATE_PASS_LIST ()

  /* These passes are run after IPA passes on every function that is being
     output to the assembler file.  */
  INSERT_PASSES_AFTER (all_passes)
  NEXT_PASS (pass_direct_call_profile, 1);
  NEXT_PASS (pass_fixup_cfg, 2);
  NEXT_PASS (pass_lower_eh_dispatch, 1);
  NEXT_PASS (pass_all_optimizations, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations)
      NEXT_PASS (pass_remove_cgraph_callee_edges, 2);
      /* Initial scalar cleanups before alias computation.
	 They ensure memory accesses are not indirect wherever possible.  */
      NEXT_PASS (pass_strip_predict_hints, 1);
      NEXT_PASS (pass_rename_ssa_copies, 2);
      NEXT_PASS (pass_ccp, 2);
      /* After CCP we rewrite no longer addressed locals into SSA
	 form if possible.  */
      NEXT_PASS (pass_copy_prop, 2);
      NEXT_PASS (pass_complete_unrolli, 1);
      NEXT_PASS (pass_phiprop, 1);
      NEXT_PASS (pass_forwprop, 2);
      NEXT_PASS (pass_object_sizes, 1);
      /* pass_build_alias is a dummy pass that ensures that we
	 execute TODO_rebuild_alias at this point.  */
      NEXT_PASS (pass_build_alias, 1);
      NEXT_PASS (pass_return_slot, 1);
      NEXT_PASS (pass_fre, 2);
      NEXT_PASS (pass_copy_prop, 3);
      NEXT_PASS (pass_merge_phi, 2);
      NEXT_PASS (pass_vrp, 1);
      NEXT_PASS (pass_dce, 1);
      NEXT_PASS (pass_call_cdce, 1);
      NEXT_PASS (pass_cselim, 1);
      NEXT_PASS (pass_tree_ifcombine, 1);
      NEXT_PASS (pass_phiopt, 1);
      NEXT_PASS (pass_tail_recursion, 2);
      NEXT_PASS (pass_ch, 1);
      NEXT_PASS (pass_stdarg, 1);
      NEXT_PASS (pass_lower_complex, 1);
      NEXT_PASS (pass_sra, 1);
      NEXT_PASS (pass_rename_ssa_copies, 3);
      /* The dom pass will also resolve all __builtin_constant_p calls
         that are still there to 0.  This has to be done after some
	 propagations have already run, but before some more dead code
	 is removed, and this place fits nicely.  Remember this when
	 trying to move or duplicate pass_dominator somewhere earlier.  */
      NEXT_PASS (pass_dominator, 1);
      /* At this point the majority of const/copy propagations
	 are exposed.  Go ahead and identify paths that should never
	 be executed in a conforming program and isolate those paths.

	 This will expose more degenerate PHIs in the main path and
	 expose more PRE/DOM optimization opportunities.  */
      NEXT_PASS (pass_isolate_erroneous_paths, 1);
      /* The only const/copy propagation opportunities left after
	 DOM and erroneous path isolation should be due to degenerate PHI nodes.
	 So rather than run the full propagators, run a specialized pass which
	 only examines PHIs to discover const/copy propagation
	 opportunities.  */
      NEXT_PASS (pass_phi_only_cprop, 1);
      NEXT_PASS (pass_dse, 1);
      NEXT_PASS (pass_reassoc, 1);
      NEXT_PASS (pass_dce, 2);
      NEXT_PASS (pass_forwprop, 3);
      NEXT_PASS (pass_phiopt, 2);
      NEXT_PASS (pass_strlen, 1);
      NEXT_PASS (pass_ccp, 3);
      /* After CCP we rewrite no longer addressed locals into SSA
	 form if possible.  */
      NEXT_PASS (pass_copy_prop, 4);
      NEXT_PASS (pass_cse_sincos, 1);
      NEXT_PASS (pass_optimize_bswap, 1);
      NEXT_PASS (pass_split_crit_edges, 1);
      NEXT_PASS (pass_pre, 1);
      NEXT_PASS (pass_sink_code, 1);
      NEXT_PASS (pass_sancov, 1);
      NEXT_PASS (pass_asan, 1);
      NEXT_PASS (pass_tsan, 1);
      NEXT_PASS (pass_tree_loop, 1);
      PUSH_INSERT_PASSES_WITHIN (pass_tree_loop)
	  NEXT_PASS (pass_tree_loop_init, 1);
	  NEXT_PASS (pass_lim, 1);
	  NEXT_PASS (pass_copy_prop, 5);
	  NEXT_PASS (pass_dce_loop, 1);
	  NEXT_PASS (pass_tree_unswitch, 1);
	  NEXT_PASS (pass_scev_cprop, 1);
	  NEXT_PASS (pass_record_bounds, 1);
	  NEXT_PASS (pass_check_data_deps, 1);
	  NEXT_PASS (pass_loop_distribution, 1);
	  NEXT_PASS (pass_copy_prop, 6);
	  NEXT_PASS (pass_graphite, 1);
	  PUSH_INSERT_PASSES_WITHIN (pass_graphite)
	      NEXT_PASS (pass_graphite_transforms, 1);
	      NEXT_PASS (pass_lim, 2);
	      NEXT_PASS (pass_copy_prop, 7);
	      NEXT_PASS (pass_dce_loop, 2);
	  POP_INSERT_PASSES ()
	  NEXT_PASS (pass_iv_canon, 1);
	  NEXT_PASS (pass_parallelize_loops, 1);
	  NEXT_PASS (pass_if_conversion, 1);
	  /* pass_vectorize must immediately follow pass_if_conversion.
	     Please do not add any other passes in between.  */
	  NEXT_PASS (pass_vectorize, 1);
          PUSH_INSERT_PASSES_WITHIN (pass_vectorize)
	      NEXT_PASS (pass_dce_loop, 3);
          POP_INSERT_PASSES ()
          NEXT_PASS (pass_predcom, 1);
	  NEXT_PASS (pass_complete_unroll, 1);
	  NEXT_PASS (pass_slp_vectorize, 1);
	  NEXT_PASS (pass_loop_prefetch, 1);
	  NEXT_PASS (pass_iv_optimize, 1);
	  NEXT_PASS (pass_lim, 3);
	  NEXT_PASS (pass_tree_loop_done, 1);
      POP_INSERT_PASSES ()
      NEXT_PASS (pass_lower_vector_ssa, 1);
      NEXT_PASS (pass_cse_reciprocals, 1);
      NEXT_PASS (pass_reassoc, 2);
      NEXT_PASS (pass_strength_reduction, 1);
      NEXT_PASS (pass_dominator, 2);
      /* The only const/copy propagation opportunities left after
	 DOM should be due to degenerate PHI nodes.  So rather than
	 run the full propagators, run a specialized pass which
	 only examines PHIs to discover const/copy propagation
	 opportunities.  */
      NEXT_PASS (pass_phi_only_cprop, 2);
      NEXT_PASS (pass_vrp, 2);
      NEXT_PASS (pass_cd_dce, 2);
      NEXT_PASS (pass_tracer, 1);
      NEXT_PASS (pass_dse, 2);
      NEXT_PASS (pass_forwprop, 4);
      NEXT_PASS (pass_phiopt, 3);
      NEXT_PASS (pass_fold_builtins, 1);
      NEXT_PASS (pass_optimize_widening_mul, 1);
      NEXT_PASS (pass_tail_calls, 1);
      NEXT_PASS (pass_rename_ssa_copies, 4);
      /* FIXME: If DCE is not run before checking for uninitialized uses,
	 we may get false warnings (e.g., testsuite/gcc.dg/uninit-5.c).
	 However, this also causes us to misdiagnose cases that should be
	 real warnings (e.g., testsuite/gcc.dg/pr18501.c).

	 To fix the false positives in uninit-5.c, we would have to
	 account for the predicates protecting the set and the use of each
	 variable.  Using a representation like Gated Single Assignment
	 may help.  */
      /* Split critical edges before late uninit warning to reduce the
         number of false positives from it.  */
      NEXT_PASS (pass_split_crit_edges, 2);
      NEXT_PASS (pass_late_warn_uninitialized, 1);
      NEXT_PASS (pass_uncprop, 1);
      NEXT_PASS (pass_local_pure_const, 2);
  POP_INSERT_PASSES ()
  NEXT_PASS (pass_all_optimizations_g, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_all_optimizations_g)
      NEXT_PASS (pass_remove_cgraph_callee_edges, 3);
      NEXT_PASS (pass_strip_predict_hints, 2);
      /* Lower remaining pieces of GIMPLE.  */
      NEXT_PASS (pass_lower_complex, 2);
      NEXT_PASS (pass_lower_vector_ssa, 2);
      /* Perform simple scalar cleanup which is constant/copy propagation.  */
      NEXT_PASS (pass_ccp, 4);
      NEXT_PASS (pass_object_sizes, 2);
      /* Fold remaining builtins.  */
      NEXT_PASS (pass_fold_builtins, 2);
      /* Copy propagation also copy-propagates constants, this is necessary
         to forward object-size and builtin folding results properly.  */
      NEXT_PASS (pass_copy_prop, 8);
      NEXT_PASS (pass_dce, 3);
      NEXT_PASS (pass_sancov, 2);
      NEXT_PASS (pass_asan, 2);
      NEXT_PASS (pass_tsan, 2);
      NEXT_PASS (pass_rename_ssa_copies, 5);
      /* ???  We do want some kind of loop invariant motion, but we possibly
         need to adjust LIM to be more friendly towards preserving accurate
	 debug information here.  */
      /* Split critical edges before late uninit warning to reduce the
         number of false positives from it.  */
      NEXT_PASS (pass_split_crit_edges, 3);
      NEXT_PASS (pass_late_warn_uninitialized, 2);
      NEXT_PASS (pass_uncprop, 2);
      NEXT_PASS (pass_local_pure_const, 3);
  POP_INSERT_PASSES ()
  NEXT_PASS (pass_tm_init, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_tm_init)
      NEXT_PASS (pass_tm_mark, 1);
      NEXT_PASS (pass_tm_memopt, 1);
      NEXT_PASS (pass_tm_edges, 1);
  POP_INSERT_PASSES ()
  NEXT_PASS (pass_vtable_verify, 1);
  NEXT_PASS (pass_lower_vector, 1);
  NEXT_PASS (pass_lower_complex_O0, 1);
  NEXT_PASS (pass_sancov_O0, 1);
  NEXT_PASS (pass_asan_O0, 1);
  NEXT_PASS (pass_tsan_O0, 1);
  NEXT_PASS (pass_sanopt, 1);
  NEXT_PASS (pass_cleanup_eh, 2);
  NEXT_PASS (pass_lower_resx, 1);
  NEXT_PASS (pass_nrv, 1);
  NEXT_PASS (pass_cleanup_cfg_post_optimizing, 1);
  NEXT_PASS (pass_warn_function_noreturn, 1);

  NEXT_PASS (pass_expand, 1);

  NEXT_PASS (pass_rest_of_compilation, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_rest_of_compilation)
      NEXT_PASS (pass_instantiate_virtual_regs, 1);
      NEXT_PASS (pass_into_cfg_layout_mode, 1);
      NEXT_PASS (pass_jump, 1);
      NEXT_PASS (pass_lower_subreg, 1);
      NEXT_PASS (pass_df_initialize_opt, 1);
      NEXT_PASS (pass_cse, 1);
      NEXT_PASS (pass_rtl_fwprop, 1);
      NEXT_PASS (pass_rtl_cprop, 1);
      NEXT_PASS (pass_rtl_pre, 1);
      NEXT_PASS (pass_rtl_hoist, 1);
      NEXT_PASS (pass_rtl_cprop, 2);
      NEXT_PASS (pass_rtl_store_motion, 1);
      NEXT_PASS (pass_cse_after_global_opts, 1);
      NEXT_PASS (pass_rtl_ifcvt, 1);
      NEXT_PASS (pass_reginfo_init, 1);
      /* Perform loop optimizations.  It might be better to do them a bit
	 sooner, but we want the profile feedback to work more
	 efficiently.  */
      NEXT_PASS (pass_loop2, 1);
      PUSH_INSERT_PASSES_WITHIN (pass_loop2)
	  NEXT_PASS (pass_rtl_loop_init, 1);
	  NEXT_PASS (pass_rtl_move_loop_invariants, 1);
	  NEXT_PASS (pass_rtl_unswitch, 1);
	  NEXT_PASS (pass_rtl_unroll_and_peel_loops, 1);
	  NEXT_PASS (pass_rtl_doloop, 1);
	  NEXT_PASS (pass_rtl_loop_done, 1);
	  TERMINATE_PASS_LIST ()
      POP_INSERT_PASSES ()
      NEXT_PASS (pass_simplify_got, 1);
      NEXT_PASS (pass_web, 1);
      NEXT_PASS (pass_rtl_cprop, 3);
      NEXT_PASS (pass_cse2, 1);
      NEXT_PASS (pass_rtl_dse1, 1);
      NEXT_PASS (pass_rtl_fwprop_addr, 1);
      NEXT_PASS (pass_inc_dec, 1);
      NEXT_PASS (pass_initialize_regs, 1);
      NEXT_PASS (pass_ud_rtl_dce, 1);
      NEXT_PASS (pass_combine, 1);
      NEXT_PASS (pass_if_after_combine, 1);
      NEXT_PASS (pass_partition_blocks, 1);
      NEXT_PASS (pass_outof_cfg_layout_mode, 1);
      NEXT_PASS (pass_split_all_insns, 1);
      NEXT_PASS (pass_lower_subreg2, 1);
      NEXT_PASS (pass_df_initialize_no_opt, 1);
      NEXT_PASS (pass_stack_ptr_mod, 1);
      NEXT_PASS (pass_mode_switching, 1);
      NEXT_PASS (pass_match_asm_constraints, 1);
      NEXT_PASS (pass_sms, 1);
      NEXT_PASS (pass_live_range_shrinkage, 1);
      NEXT_PASS (pass_sched, 1);
      NEXT_PASS (pass_ira, 1);
      NEXT_PASS (pass_reload, 1);
      NEXT_PASS (pass_postreload, 1);
      PUSH_INSERT_PASSES_WITHIN (pass_postreload)
	  NEXT_PASS (pass_postreload_cse, 1);
	  NEXT_PASS (pass_gcse2, 1);
	  NEXT_PASS (pass_split_after_reload, 1);
	  NEXT_PASS (pass_ree, 1);
	  NEXT_PASS (pass_compare_elim_after_reload, 1);
	  NEXT_PASS (pass_branch_target_load_optimize1, 1);
	  NEXT_PASS (pass_thread_prologue_and_epilogue, 1);
	  NEXT_PASS (pass_rtl_dse2, 1);
	  NEXT_PASS (pass_stack_adjustments, 1);
	  NEXT_PASS (pass_jump2, 1);
	  NEXT_PASS (pass_peephole2, 1);
	  NEXT_PASS (pass_if_after_reload, 1);
	  NEXT_PASS (pass_regrename, 1);
	  NEXT_PASS (pass_cprop_hardreg, 1);
	  NEXT_PASS (pass_fast_rtl_dce, 1);
	  NEXT_PASS (pass_duplicate_computed_gotos, 1);
	  NEXT_PASS (pass_reorder_blocks, 1);
	  NEXT_PASS (pass_branch_target_load_optimize2, 1);
	  NEXT_PASS (pass_leaf_regs, 1);
	  NEXT_PASS (pass_split_before_sched2, 1);
	  NEXT_PASS (pass_sched2, 1);
	  NEXT_PASS (pass_stack_regs, 1);
	  PUSH_INSERT_PASSES_WITHIN (pass_stack_regs)
	      NEXT_PASS (pass_split_before_regstack, 1);
	      NEXT_PASS (pass_stack_regs_run, 1);
	  POP_INSERT_PASSES ()
	  NEXT_PASS (pass_compute_alignments, 1);
	  NEXT_PASS (pass_variable_tracking, 1);
	  NEXT_PASS (pass_free_cfg, 1);
	  NEXT_PASS (pass_machine_reorg, 1);
	  NEXT_PASS (pass_cleanup_barriers, 1);
	  NEXT_PASS (pass_delay_slots, 1);
	  NEXT_PASS (pass_split_for_shorten_branches, 1);
	  NEXT_PASS (pass_convert_to_eh_region_ranges, 1);
	  NEXT_PASS (pass_shorten_branches, 1);
	  NEXT_PASS (pass_set_nothrow_function_flags, 1);
	  NEXT_PASS (pass_dwarf2_frame, 1);
	  NEXT_PASS (pass_final, 1);
      POP_INSERT_PASSES ()
      NEXT_PASS (pass_df_finish, 1);
  POP_INSERT_PASSES ()
  NEXT_PASS (pass_clean_state, 1);
  TERMINATE_PASS_LIST ()
