+extern struct tree_opt_pass pass_ipa_early_inline;
+extern struct tree_opt_pass pass_ipa_reference;
+extern struct tree_opt_pass pass_ipa_pure_const;
+extern struct tree_opt_pass pass_ipa_type_escape;
+extern struct tree_opt_pass pass_ipa_pta;
+extern struct tree_opt_pass pass_early_local_passes;
+extern struct tree_opt_pass pass_ipa_increase_alignment;
+extern struct tree_opt_pass pass_ipa_function_and_variable_visibility;
+
+extern struct tree_opt_pass pass_all_optimizations;
+extern struct tree_opt_pass pass_cleanup_cfg_post_optimizing;
+extern struct tree_opt_pass pass_free_cfg_annotations;
+extern struct tree_opt_pass pass_free_datastructures;
+extern struct tree_opt_pass pass_init_datastructures;
+extern struct tree_opt_pass pass_fixup_cfg;
+
+extern struct tree_opt_pass pass_init_function;
+extern struct tree_opt_pass pass_jump;
+extern struct tree_opt_pass pass_rtl_eh;
+extern struct tree_opt_pass pass_initial_value_sets;
+extern struct tree_opt_pass pass_unshare_all_rtl;
+extern struct tree_opt_pass pass_instantiate_virtual_regs;
+extern struct tree_opt_pass pass_rtl_fwprop;
+extern struct tree_opt_pass pass_rtl_fwprop_addr;
+extern struct tree_opt_pass pass_jump2;
+extern struct tree_opt_pass pass_lower_subreg;
+extern struct tree_opt_pass pass_cse;
+extern struct tree_opt_pass pass_fast_rtl_dce;
+extern struct tree_opt_pass pass_ud_rtl_dce;
+extern struct tree_opt_pass pass_rtl_dce;
+extern struct tree_opt_pass pass_rtl_dse1;
+extern struct tree_opt_pass pass_rtl_dse2;
+extern struct tree_opt_pass pass_rtl_dse3;
+extern struct tree_opt_pass pass_gcse;
+extern struct tree_opt_pass pass_jump_bypass;
+extern struct tree_opt_pass pass_profiling;
+extern struct tree_opt_pass pass_rtl_ifcvt;
+extern struct tree_opt_pass pass_tracer;
+
+extern struct tree_opt_pass pass_into_cfg_layout_mode;
+extern struct tree_opt_pass pass_outof_cfg_layout_mode;
+
+extern struct tree_opt_pass pass_loop2;
+extern struct tree_opt_pass pass_rtl_loop_init;
+extern struct tree_opt_pass pass_rtl_move_loop_invariants;
+extern struct tree_opt_pass pass_rtl_unswitch;
+extern struct tree_opt_pass pass_rtl_unroll_and_peel_loops;
+extern struct tree_opt_pass pass_rtl_doloop;
+extern struct tree_opt_pass pass_rtl_loop_done;
+
+extern struct tree_opt_pass pass_web;
+extern struct tree_opt_pass pass_cse2;
+extern struct tree_opt_pass pass_df_initialize_opt;
+extern struct tree_opt_pass pass_df_initialize_no_opt;
+extern struct tree_opt_pass pass_regclass_init;
+extern struct tree_opt_pass pass_subregs_of_mode_init;
+extern struct tree_opt_pass pass_subregs_of_mode_finish;
+extern struct tree_opt_pass pass_inc_dec;
+extern struct tree_opt_pass pass_stack_ptr_mod;
+extern struct tree_opt_pass pass_initialize_regs;
+extern struct tree_opt_pass pass_combine;
+extern struct tree_opt_pass pass_if_after_combine;
+extern struct tree_opt_pass pass_partition_blocks;
+extern struct tree_opt_pass pass_match_asm_constraints;
+extern struct tree_opt_pass pass_regmove;
+extern struct tree_opt_pass pass_split_all_insns;
+extern struct tree_opt_pass pass_lower_subreg2;
+extern struct tree_opt_pass pass_mode_switching;
+extern struct tree_opt_pass pass_see;
+extern struct tree_opt_pass pass_sms;
+extern struct tree_opt_pass pass_sched;
+extern struct tree_opt_pass pass_local_alloc;
+extern struct tree_opt_pass pass_global_alloc;
+extern struct tree_opt_pass pass_postreload;
+extern struct tree_opt_pass pass_clean_state;
+extern struct tree_opt_pass pass_branch_prob;
+extern struct tree_opt_pass pass_value_profile_transformations;
+extern struct tree_opt_pass pass_postreload_cse;
+extern struct tree_opt_pass pass_gcse2;
+extern struct tree_opt_pass pass_split_after_reload;
+extern struct tree_opt_pass pass_branch_target_load_optimize1;
+extern struct tree_opt_pass pass_thread_prologue_and_epilogue;
+extern struct tree_opt_pass pass_stack_adjustments;
+extern struct tree_opt_pass pass_peephole2;
+extern struct tree_opt_pass pass_if_after_reload;
+extern struct tree_opt_pass pass_regrename;
+extern struct tree_opt_pass pass_cprop_hardreg;
+extern struct tree_opt_pass pass_reorder_blocks;
+extern struct tree_opt_pass pass_branch_target_load_optimize2;
+extern struct tree_opt_pass pass_leaf_regs;
+extern struct tree_opt_pass pass_split_before_sched2;
+extern struct tree_opt_pass pass_sched2;
+extern struct tree_opt_pass pass_stack_regs;
+extern struct tree_opt_pass pass_stack_regs_run;
+extern struct tree_opt_pass pass_df_finish;
+extern struct tree_opt_pass pass_compute_alignments;
+extern struct tree_opt_pass pass_duplicate_computed_gotos;
+extern struct tree_opt_pass pass_variable_tracking;
+extern struct tree_opt_pass pass_free_cfg;
+extern struct tree_opt_pass pass_machine_reorg;
+extern struct tree_opt_pass pass_cleanup_barriers;
+extern struct tree_opt_pass pass_delay_slots;
+extern struct tree_opt_pass pass_split_for_shorten_branches;
+extern struct tree_opt_pass pass_split_before_regstack;
+extern struct tree_opt_pass pass_convert_to_eh_region_ranges;
+extern struct tree_opt_pass pass_shorten_branches;
+extern struct tree_opt_pass pass_set_nothrow_function_flags;
+extern struct tree_opt_pass pass_final;
+extern struct tree_opt_pass pass_rtl_seqabstr;
+extern struct tree_opt_pass pass_release_ssa_names;
+extern struct tree_opt_pass pass_early_inline;
+extern struct tree_opt_pass pass_inline_parameters;
+extern struct tree_opt_pass pass_apply_inline;
+extern struct tree_opt_pass pass_all_early_optimizations;
+
+/* The root of the compilation pass tree, once constructed. */
+extern struct tree_opt_pass *all_passes, *all_ipa_passes, *all_lowering_passes;
+
+extern void execute_pass_list (struct tree_opt_pass *);
+extern void execute_ipa_pass_list (struct tree_opt_pass *);
+extern void print_current_pass (FILE *);
+extern void debug_pass (void);
+
+/* Set to true if the pass is called the first time during compilation of the
+ current function. Note that using this information in the optimization
+ passes is considered not to be clean, and it should be avoided if possible.
+ This flag is currently used to prevent loops from being peeled repeatedly
+ in jump threading; it will be removed once we preserve loop structures
+ throughout the compilation -- we will be able to mark the affected loops
+ directly in jump threading, and avoid peeling them next time. */
+extern bool first_pass_instance;