/* This file is auto-generated by gen-pass-instances.awk
   from passes.def.  */
/* Description of pass structure
   Copyright (C) 1987-2015 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_ipa_chkp_versioning, 1);
  NEXT_PASS (pass_ipa_chkp_early_produce_thunks, 1);
  NEXT_PASS (pass_build_ssa_passes, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_build_ssa_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_nothrow, 1);
  POP_INSERT_PASSES ()

  NEXT_PASS (pass_chkp_instrumentation_passes, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_chkp_instrumentation_passes)
      NEXT_PASS (pass_fixup_cfg, 2);
      NEXT_PASS (pass_chkp, 1);
      NEXT_PASS (pass_rebuild_cgraph_edges, 1);
  POP_INSERT_PASSES ()

  NEXT_PASS (pass_local_optimization_passes, 1);
  PUSH_INSERT_PASSES_WITHIN (pass_local_optimization_passes)
      NEXT_PASS (pass_fixup_cfg, 3);
      NEXT_PASS (pass_rebuild_cgraph_edges, 2);
      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_object_sizes, 1);
	  NEXT_PASS (pass_ccp, 1);
	  /* After CCP we rewrite no longer addressed locals into SSA
	     form if possible.  */
	  NEXT_PASS (pass_forwprop, 1);
	  NEXT_PASS (pass_sra_early, 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_fre, 1);
	  NEXT_PASS (pass_merge_phi, 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_profile, 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, 3);
      NEXT_PASS (pass_inline_parameters, 2);
  POP_INSERT_PASSES ()
  NEXT_PASS (pass_ipa_chkp_produce_thunks, 1);
  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_icf, 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);
  /* This pass needs to be scheduled after any IP code duplication.   */
  NEXT_PASS (pass_ipa_single_use, 1);
  /* Comdat privatization come last, as direct references to comdat local
     symbols are not allowed outside of the comdat group.  Privatizing early
     would result in missed optimizations due to this restriction.  */
  NEXT_PASS (pass_ipa_comdats, 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_fixup_cfg, 4);
  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, 1);
      NEXT_PASS (pass_complete_unrolli, 1);
      NEXT_PASS (pass_phiprop, 1);
      NEXT_PASS (pass_forwprop, 2);
      NEXT_PASS (pass_object_sizes, 2);
      /* 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_merge_phi, 2);
      NEXT_PASS (pass_vrp, 1);
      NEXT_PASS (pass_chkp_opt, 1);
      NEXT_PASS (pass_dce, 1);
      NEXT_PASS (pass_call_cdce, 1);
      NEXT_PASS (pass_cselim, 1);
      NEXT_PASS (pass_copy_prop, 2);
      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_ccp, 3);
      /* After CCP we rewrite no longer addressed locals into SSA
	 form if possible.  */
      NEXT_PASS (pass_copy_prop, 3);
      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_asan, 1);
      NEXT_PASS (pass_tsan, 1);
      /* Pass group that runs when 1) enabled, 2) there are loops
	 in the function.  Make sure to run pass_fix_loops before
	 to discover/remove loops before running the gate function
	 of pass_tree_loop.  */
      NEXT_PASS (pass_fix_loops, 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, 4);
	  NEXT_PASS (pass_dce, 3);
	  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, 5);
	  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, 6);
	      NEXT_PASS (pass_dce, 4);
	  POP_INSERT_PASSES ()
	  NEXT_PASS (pass_iv_canon, 1);
	  NEXT_PASS (pass_parallelize_loops, 1);
	  PUSH_INSERT_PASSES_WITHIN (pass_parallelize_loops)
	      NEXT_PASS (pass_expand_omp_ssa, 1);
	  POP_INSERT_PASSES ()
	  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, 5);
          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);
	  /* Run IVOPTs after the last pass that uses data-reference analysis
	     as that doesn't handle TARGET_MEM_REFs.  */
	  NEXT_PASS (pass_iv_optimize, 1);
	  NEXT_PASS (pass_lim, 3);
	  NEXT_PASS (pass_tree_loop_done, 1);
      POP_INSERT_PASSES ()
      /* Pass group that runs when pass_tree_loop is disabled or there
         are no loops in the function.  */
      NEXT_PASS (pass_tree_no_loop, 1);
      PUSH_INSERT_PASSES_WITHIN (pass_tree_no_loop)
	  NEXT_PASS (pass_slp_vectorize, 2);
      POP_INSERT_PASSES ()
      NEXT_PASS (pass_simduid_cleanup, 1);
      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_tracer, 1);
      NEXT_PASS (pass_dominator, 2);
      NEXT_PASS (pass_strlen, 1);
      NEXT_PASS (pass_vrp, 2);
      /* The only const/copy propagation opportunities left after
	 DOM and VRP 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_cd_dce, 2);
      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, 3);
      /* 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, 7);
      NEXT_PASS (pass_dce, 6);
      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_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_unroll_loops, 1);
	  NEXT_PASS (pass_rtl_doloop, 1);
	  NEXT_PASS (pass_rtl_loop_done, 1);
	  TERMINATE_PASS_LIST ()
      POP_INSERT_PASSES ()
      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_duplicate_computed_gotos, 1);
	  NEXT_PASS (pass_sched_fusion, 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_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 ()
      POP_INSERT_PASSES ()
      NEXT_PASS (pass_late_compilation, 1);
      PUSH_INSERT_PASSES_WITHIN (pass_late_compilation)
	  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 ()
