tree-vrp.c (execute_vrp): Return value.

2006-03-02  Daniel Berlin <dberlin@dberlin.org>

	* gcc/tree-vrp.c (execute_vrp): Return value.
	* gcc/regrename.c (rest_of_handle_regrename): Ditto.
	* gcc/tree-into-ssa.c (rewrite_into_ssa): Ditto.
	* gcc/tree-complex.c (tree_lower_complex): Ditto.
	(tree_lower_complex_O0): Ditto.
	* gcc/tracer.c (rest_of_handle_tracer): Ditto.
	* gcc/postreload-gcse.c (rest_of_handle_gcse2): Ditto.
	* gcc/postreload.c (rest_of_handle_postreload): Ditto.
	* gcc/tree-tailcall.c (execute_tail_recursion): Ditto.
	(execute_tail_calls): Ditto.
	* gcc/tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* gcc/tree.h (init_function_for_compilation): Ditto.
	* gcc/ipa-cp.c (ipcp_driver): Ditto.
	* gcc/tree-scalar-evolution.c (scev_const_prop): Ditto.
	* gcc/tree-scalar-evolution.h (scev_const_prop): Ditto.
	* gcc/final.c (compute_alignments): Ditto.
	(rest_of_handle_final): Ditto.
	(rest_of_handle_shorten_branches): Ditto.
	(rest_of_clean_state): Ditto.
	* gcc/omp-low.c (execute_expand_omp): Ditto.
	(execute_lower_omp): Ditto.
	* gcc/tree-ssa-dse.c (tree_ssa_dse): Ditto.
	* gcc/ipa-reference.c (static_execute): Ditto.
	* gcc/tree-ssa-uncprop.c (tree_ssa_uncprop): Ditto.
	* gcc/reorg.c (rest_of_handle_delay_slots): Ditto.
	(rest_of_handle_machine_reorg): Ditto.
	* gcc/cgraphunit.c (rebuild_cgraph_edges): Ditto.
	* gcc/flow.c (recompute_reg_usage): Ditto.
	(rest_of_handle_remove_death_notes): Ditto.
	(rest_of_handle_life): Ditto.
	(rest_of_handle_flow2): Ditto.
	* gcc/tree-ssa-copyrename.c (rename_ssa_copies): Ditto.
	* gcc/tree-ssa-ccp.c (do_ssa_ccp): Ditto.
	(do_ssa_store_ccp): Ditto.
	(execute_fold_all_builtins): Ditto.
	* gcc/mode-switching.c (rest_of_handle_mode_switching): Ditto.
	* gcc/modulo-sched.c (rest_of_handle_sms): Ditto.
	* gcc/ipa-pure-const.c (static_execute): Ditto.
	* gcc/cse.c (rest_of_handle_cse): Ditto.
	(rest_of_handle_cse2): Ditto.
	* gcc/web.c (rest_of_handle_web): Ditto.
	* gcc/tree-stdarg.c (execute_optimize_stdarg): Ditto.
	* gcc/tree-ssa-math-opts.c (execute_cse_reciprocals): Ditto.
	* gcc/tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
	* gcc/tree-nrv.c (tree_nrv): Ditto.
	(execute_return_slot_opt): Ditto.
	* gcc/tree-ssa-alias.c (compute_may_aliases): Ditto.
	(create_structure_vars): Ditto.
	* gcc/loop-init.c (rtl_loop_init): Ditto.
	(rtl_loop_done): Ditto.
	(rtl_move_loop_invariants): Ditto.
	(rtl_unswitch): Ditto.
	(rtl_unroll_and_peel_loops): Ditto.
	(rtl_doloop): Ditto.
	* gcc/gimple-low.c (lower_function_body): Ditto.
	(mark_used_blocks): Ditto.
	* gcc/tree-ssa-sink.c (execute_sink_code): Ditto.
	* gcc/ipa-inline.c (cgraph_decide_inlining): Ditto.
	(cgraph_early_inlining): Ditto.
	* gcc/global.c (rest_of_handle_global_alloc): Ditto.
	* gcc/jump.c (cleanup_barriers): Ditto.
	(purge_line_number_notes): Ditto.
	* gcc/ifcvt.c (rest_of_handle_if_conversion): Ditto.
	(rest_of_handle_if_after_reload): Ditto.
	* gcc/tree-ssa-loop.c (tree_ssa_loop_init): Ditto.
	(tree_ssa_loop_im): Ditto.
	(tree_ssa_loop_unswitch): Ditto.
	(tree_vectorize): Ditto.
	(tree_linear_transform): Ditto.
	(tree_ssa_loop_ivcanon): Ditto.
	(tree_ssa_empty_loop): Ditto.
	(tree_ssa_loop_bounds): Ditto.
	(tree_complete_unroll): Ditto.
	(tree_ssa_loop_prefetch): Ditto.
	(tree_ssa_loop_ivopts): Ditto.
	(tree_ssa_loop_done): Ditto.
	* gcc/predict.c (tree_estimate_probability): Ditto.
	* gcc/recog.c (split_all_insns_noflow): Ditto.
	(rest_of_handle_peephole2): Ditto.
	(rest_of_handle_split_all_insns): Ditto.
	* gcc/tree-eh.c (lower_eh_constructs): Ditto.
	* gcc/regmove.c (rest_of_handle_regmove): Ditto.
	(rest_of_handle_stack_adjustments): Ditto.
	* gcc/local-alloc.c (rest_of_handle_local_alloc): Ditto.
	* gcc/function.c (instantiate_virtual_regs): Ditto.
	(init_function_for_compilation): Ditto.
	(rest_of_handle_check_leaf_regs): Ditto.
	* gcc/gcse.c (rest_of_handle_jump_bypass): Ditto.
	(rest_of_handle_gcse): Ditto.
	* gcc/ipa-type-escape.c (type_escape_execute): Ditto.
	* gcc/alias.c (rest_of_handle_cfg): Ditto.
	* gcc/tree-if-conv.c (main_tree_if_conversion): Ditto.
	* gcc/profile.c (rest_of_handle_branch_prob): Ditto.
	* gcc/tree-ssa-phiopt.c (tree_ssa_phiopt): Ditto.
	* gcc/rtl-factoring.c (rest_of_rtl_seqabstr): Ditto.
	* gcc/bt-load.c (rest_of_handle_branch_target_load_optimize): Ditto
	* gcc/tree-dfa.c (find_referenced_vars): Ditto.
	* gcc/except.c (set_nothrow_function_flags): Ditto.
	(convert_to_eh_region_ranges): Ditto.
	(rest_of_handle_eh): Ditto.
	* gcc/emit-rtl.c (unshare_all_rtl): Ditto.
	(remove_unnecessary_notes): Ditto.
	* gcc/except.h (set_nothrow_function_flags): Ditto.
	(convert_to_eh_region_ranges): Ditto.
	* gcc/cfgexpand.c (tree_expand_cfg): Ditto.
	* gcc/tree-cfgcleanup.c (merge_phi_nodes): Ditto.
	* gcc/tree-ssa-pre.c (do_pre): Ditto.
	(execute_fre): Ditto.
	* gcc/cfgcleanup.c (rest_of_handle_jump): Ditto.
	(rest_of_handle_jump2): Ditto.
	* gcc/tree-sra.c (tree_sra): Ditto.
	* gcc/tree-mudflap.c (execute_mudflap_function_ops): Ditto.
	(execute_mudflap_function_decls): Ditto.
	* gcc/tree-ssa-copy.c (do_copy_prop): Ditto.
	(do_store_copy_prop): Ditto.
	* gcc/ipa-prop.h (ipcp_driver): Ditto.
	* gcc/cfglayout.c (insn_locators_initialize): Ditto.
	* gcc/tree-ssa-forwprop.c
	(tree_ssa_forward_propagate_single_use_vars): Ditto.
	* gcc/cfglayout.h (insn_locators_initialize): Ditto.
	* gcc/tree-ssa-dce.c (tree_ssa_dce): Ditto.
	* gcc/tree-ssa.c (execute_early_warn_uninitialized): Ditto.
	(execute_late_warn_uninitialized): Ditto.
	* gcc/rtl.h (cleanup_barriers): Ditto.
	(split_all_insns_noflow): Ditto.
	(purge_line_number_notes): Ditto.
	(unshare_all_rtl): Ditto.
	(remove_unnecessary_notes): Ditto.
	(recompute_reg_usage): Ditto.
	(variable_tracking_main): Ditto.
	* gcc/integrate.c (emit_initial_value_sets): Ditto.
	* gcc/integrate.h (emit_initial_value_sets): Ditto.
	* gcc/tree-optimize.c (execute_free_datastructures): Ditto
	(execute_free_cfg_annotations): Ditto.
	(execute_fixup_cfg): Ditto.
	(execute_cleanup_cfg_pre_ipa): Ditto.
	(execute_cleanup_cfg_post_optimizing): Ditto.
	(execute_init_datastructures): Ditto.
	* gcc/tree-object-size.c (compute_object_sizes): Ditto.
	* gcc/combine.c (rest_of_handle_combine): Ditto.
	* gcc/tree-outof-ssa.c (rewrite_out_of_ssa): Ditto.
	* gcc/bb-reorder.c (duplicate_computed_gotos): Ditto.
	(rest_of_handle_reorder_blocks): Ditto.
	(rest_of_handle_partition_blocks): Ditto.
	* gcc/var-tracking.c (variable_tracking_main): Ditto.
	* gcc/tree-profile.c (tree_profiling): Ditto.
	* gcc/tree-vect-generic.c (expand_vector_operations): Ditto.
	* gcc/reg-stack.c (rest_of_handle_stack_regs): Ditto.
	* gcc/sched-rgn.c (rest_of_handle_sched): Ditto.
	(rest_of_handle_sched2): Ditto.
	* gcc/basic-block.h (free_bb_insn): Ditto.
	* gcc/tree-ssa-structalias.c (ipa_pta_execute): Ditto.
	* gcc/tree-cfg.c (execute_build_cfg): Ditto.
	(remove_useless_stmts): Ditto.
	(split_critical_edges): Ditto.
	(execute_warn_function_return): Ditto.
	(execute_warn_function_noreturn): Ditto.
	* gcc/tree-ssa-reassoc.c (execute_reassoc): Ditto.
	* gcc/cfgrtl.c (free_bb_for_insn): Ditto.
	* gcc/passes.c (execute_one_pass): Run additional
	todos returned by execute function.
	* gcc/tree-pass.h (struct tree_opt_pass): Make execute
	return a value.

From-SVN: r111643
This commit is contained in:
Daniel Berlin 2006-03-02 19:00:11 +00:00 committed by Daniel Berlin
parent d349339d33
commit c2924966db
93 changed files with 520 additions and 209 deletions

View File

@ -1,3 +1,169 @@
2006-03-02 Daniel Berlin <dberlin@dberlin.org>
* gcc/tree-vrp.c (execute_vrp): Return value.
* gcc/regrename.c (rest_of_handle_regrename): Ditto.
* gcc/tree-into-ssa.c (rewrite_into_ssa): Ditto.
* gcc/tree-complex.c (tree_lower_complex): Ditto.
(tree_lower_complex_O0): Ditto.
* gcc/tracer.c (rest_of_handle_tracer): Ditto.
* gcc/postreload-gcse.c (rest_of_handle_gcse2): Ditto.
* gcc/postreload.c (rest_of_handle_postreload): Ditto.
* gcc/tree-tailcall.c (execute_tail_recursion): Ditto.
(execute_tail_calls): Ditto.
* gcc/tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
* gcc/tree.h (init_function_for_compilation): Ditto.
* gcc/ipa-cp.c (ipcp_driver): Ditto.
* gcc/tree-scalar-evolution.c (scev_const_prop): Ditto.
* gcc/tree-scalar-evolution.h (scev_const_prop): Ditto.
* gcc/final.c (compute_alignments): Ditto.
(rest_of_handle_final): Ditto.
(rest_of_handle_shorten_branches): Ditto.
(rest_of_clean_state): Ditto.
* gcc/omp-low.c (execute_expand_omp): Ditto.
(execute_lower_omp): Ditto.
* gcc/tree-ssa-dse.c (tree_ssa_dse): Ditto.
* gcc/ipa-reference.c (static_execute): Ditto.
* gcc/tree-ssa-uncprop.c (tree_ssa_uncprop): Ditto.
* gcc/reorg.c (rest_of_handle_delay_slots): Ditto.
(rest_of_handle_machine_reorg): Ditto.
* gcc/cgraphunit.c (rebuild_cgraph_edges): Ditto.
* gcc/flow.c (recompute_reg_usage): Ditto.
(rest_of_handle_remove_death_notes): Ditto.
(rest_of_handle_life): Ditto.
(rest_of_handle_flow2): Ditto.
* gcc/tree-ssa-copyrename.c (rename_ssa_copies): Ditto.
* gcc/tree-ssa-ccp.c (do_ssa_ccp): Ditto.
(do_ssa_store_ccp): Ditto.
(execute_fold_all_builtins): Ditto.
* gcc/mode-switching.c (rest_of_handle_mode_switching): Ditto.
* gcc/modulo-sched.c (rest_of_handle_sms): Ditto.
* gcc/ipa-pure-const.c (static_execute): Ditto.
* gcc/cse.c (rest_of_handle_cse): Ditto.
(rest_of_handle_cse2): Ditto.
* gcc/web.c (rest_of_handle_web): Ditto.
* gcc/tree-stdarg.c (execute_optimize_stdarg): Ditto.
* gcc/tree-ssa-math-opts.c (execute_cse_reciprocals): Ditto.
* gcc/tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
* gcc/tree-nrv.c (tree_nrv): Ditto.
(execute_return_slot_opt): Ditto.
* gcc/tree-ssa-alias.c (compute_may_aliases): Ditto.
(create_structure_vars): Ditto.
* gcc/loop-init.c (rtl_loop_init): Ditto.
(rtl_loop_done): Ditto.
(rtl_move_loop_invariants): Ditto.
(rtl_unswitch): Ditto.
(rtl_unroll_and_peel_loops): Ditto.
(rtl_doloop): Ditto.
* gcc/gimple-low.c (lower_function_body): Ditto.
(mark_used_blocks): Ditto.
* gcc/tree-ssa-sink.c (execute_sink_code): Ditto.
* gcc/ipa-inline.c (cgraph_decide_inlining): Ditto.
(cgraph_early_inlining): Ditto.
* gcc/global.c (rest_of_handle_global_alloc): Ditto.
* gcc/jump.c (cleanup_barriers): Ditto.
(purge_line_number_notes): Ditto.
* gcc/ifcvt.c (rest_of_handle_if_conversion): Ditto.
(rest_of_handle_if_after_reload): Ditto.
* gcc/tree-ssa-loop.c (tree_ssa_loop_init): Ditto.
(tree_ssa_loop_im): Ditto.
(tree_ssa_loop_unswitch): Ditto.
(tree_vectorize): Ditto.
(tree_linear_transform): Ditto.
(tree_ssa_loop_ivcanon): Ditto.
(tree_ssa_empty_loop): Ditto.
(tree_ssa_loop_bounds): Ditto.
(tree_complete_unroll): Ditto.
(tree_ssa_loop_prefetch): Ditto.
(tree_ssa_loop_ivopts): Ditto.
(tree_ssa_loop_done): Ditto.
* gcc/predict.c (tree_estimate_probability): Ditto.
* gcc/recog.c (split_all_insns_noflow): Ditto.
(rest_of_handle_peephole2): Ditto.
(rest_of_handle_split_all_insns): Ditto.
* gcc/tree-eh.c (lower_eh_constructs): Ditto.
* gcc/regmove.c (rest_of_handle_regmove): Ditto.
(rest_of_handle_stack_adjustments): Ditto.
* gcc/local-alloc.c (rest_of_handle_local_alloc): Ditto.
* gcc/function.c (instantiate_virtual_regs): Ditto.
(init_function_for_compilation): Ditto.
(rest_of_handle_check_leaf_regs): Ditto.
* gcc/gcse.c (rest_of_handle_jump_bypass): Ditto.
(rest_of_handle_gcse): Ditto.
* gcc/ipa-type-escape.c (type_escape_execute): Ditto.
* gcc/alias.c (rest_of_handle_cfg): Ditto.
* gcc/tree-if-conv.c (main_tree_if_conversion): Ditto.
* gcc/profile.c (rest_of_handle_branch_prob): Ditto.
* gcc/tree-ssa-phiopt.c (tree_ssa_phiopt): Ditto.
* gcc/rtl-factoring.c (rest_of_rtl_seqabstr): Ditto.
* gcc/bt-load.c (rest_of_handle_branch_target_load_optimize): Ditto
* gcc/tree-dfa.c (find_referenced_vars): Ditto.
* gcc/except.c (set_nothrow_function_flags): Ditto.
(convert_to_eh_region_ranges): Ditto.
(rest_of_handle_eh): Ditto.
* gcc/emit-rtl.c (unshare_all_rtl): Ditto.
(remove_unnecessary_notes): Ditto.
* gcc/except.h (set_nothrow_function_flags): Ditto.
(convert_to_eh_region_ranges): Ditto.
* gcc/cfgexpand.c (tree_expand_cfg): Ditto.
* gcc/tree-cfgcleanup.c (merge_phi_nodes): Ditto.
* gcc/tree-ssa-pre.c (do_pre): Ditto.
(execute_fre): Ditto.
* gcc/cfgcleanup.c (rest_of_handle_jump): Ditto.
(rest_of_handle_jump2): Ditto.
* gcc/tree-sra.c (tree_sra): Ditto.
* gcc/tree-mudflap.c (execute_mudflap_function_ops): Ditto.
(execute_mudflap_function_decls): Ditto.
* gcc/tree-ssa-copy.c (do_copy_prop): Ditto.
(do_store_copy_prop): Ditto.
* gcc/ipa-prop.h (ipcp_driver): Ditto.
* gcc/cfglayout.c (insn_locators_initialize): Ditto.
* gcc/tree-ssa-forwprop.c
(tree_ssa_forward_propagate_single_use_vars): Ditto.
* gcc/cfglayout.h (insn_locators_initialize): Ditto.
* gcc/tree-ssa-dce.c (tree_ssa_dce): Ditto.
* gcc/tree-ssa.c (execute_early_warn_uninitialized): Ditto.
(execute_late_warn_uninitialized): Ditto.
* gcc/rtl.h (cleanup_barriers): Ditto.
(split_all_insns_noflow): Ditto.
(purge_line_number_notes): Ditto.
(unshare_all_rtl): Ditto.
(remove_unnecessary_notes): Ditto.
(recompute_reg_usage): Ditto.
(variable_tracking_main): Ditto.
* gcc/integrate.c (emit_initial_value_sets): Ditto.
* gcc/integrate.h (emit_initial_value_sets): Ditto.
* gcc/tree-optimize.c (execute_free_datastructures): Ditto
(execute_free_cfg_annotations): Ditto.
(execute_fixup_cfg): Ditto.
(execute_cleanup_cfg_pre_ipa): Ditto.
(execute_cleanup_cfg_post_optimizing): Ditto.
(execute_init_datastructures): Ditto.
* gcc/tree-object-size.c (compute_object_sizes): Ditto.
* gcc/combine.c (rest_of_handle_combine): Ditto.
* gcc/tree-outof-ssa.c (rewrite_out_of_ssa): Ditto.
* gcc/bb-reorder.c (duplicate_computed_gotos): Ditto.
(rest_of_handle_reorder_blocks): Ditto.
(rest_of_handle_partition_blocks): Ditto.
* gcc/var-tracking.c (variable_tracking_main): Ditto.
* gcc/tree-profile.c (tree_profiling): Ditto.
* gcc/tree-vect-generic.c (expand_vector_operations): Ditto.
* gcc/reg-stack.c (rest_of_handle_stack_regs): Ditto.
* gcc/sched-rgn.c (rest_of_handle_sched): Ditto.
(rest_of_handle_sched2): Ditto.
* gcc/basic-block.h (free_bb_insn): Ditto.
* gcc/tree-ssa-structalias.c (ipa_pta_execute): Ditto.
* gcc/tree-cfg.c (execute_build_cfg): Ditto.
(remove_useless_stmts): Ditto.
(split_critical_edges): Ditto.
(execute_warn_function_return): Ditto.
(execute_warn_function_noreturn): Ditto.
* gcc/tree-ssa-reassoc.c (execute_reassoc): Ditto.
* gcc/cfgrtl.c (free_bb_for_insn): Ditto.
* gcc/passes.c (execute_one_pass): Run additional
todos returned by execute function.
* gcc/tree-pass.h (struct tree_opt_pass): Make execute
return a value.
2006-03-02 Richard Guenther <rguenther@suse.de>
* tree-ssa-alias.c (find_used_portions): Consider taking

View File

@ -2645,7 +2645,7 @@ end_alias_analysis (void)
/* Do control and data flow analysis; write some of the results to the
dump file. */
static void
static unsigned int
rest_of_handle_cfg (void)
{
if (dump_file)
@ -2653,6 +2653,7 @@ rest_of_handle_cfg (void)
if (optimize)
cleanup_cfg (CLEANUP_EXPENSIVE
| (flag_thread_jumps ? CLEANUP_THREADING : 0));
return 0;
}
struct tree_opt_pass pass_cfg =

View File

@ -483,7 +483,7 @@ extern bitmap_obstack reg_obstack;
#define set_block_for_insn(INSN, BB) (BLOCK_FOR_INSN (INSN) = BB)
extern void compute_bb_for_insn (void);
extern void free_bb_for_insn (void);
extern unsigned int free_bb_for_insn (void);
extern void update_bb_for_insn (basic_block);
extern void free_basic_block_vars (void);

View File

@ -1979,7 +1979,7 @@ gate_duplicate_computed_gotos (void)
}
static void
static unsigned int
duplicate_computed_gotos (void)
{
basic_block bb, new_bb;
@ -1987,10 +1987,10 @@ duplicate_computed_gotos (void)
int max_size;
if (n_basic_blocks <= NUM_FIXED_BLOCKS + 1)
return;
return 0;
if (targetm.cannot_modify_jumps_p ())
return;
return 0;
cfg_layout_initialize (0);
@ -2083,6 +2083,7 @@ done:
cfg_layout_finalize ();
BITMAP_FREE (candidates);
return 0;
}
struct tree_opt_pass pass_duplicate_computed_gotos =
@ -2201,7 +2202,7 @@ gate_handle_reorder_blocks (void)
/* Reorder basic blocks. */
static void
static unsigned int
rest_of_handle_reorder_blocks (void)
{
bool changed;
@ -2234,6 +2235,7 @@ rest_of_handle_reorder_blocks (void)
/* Add NOTE_INSN_SWITCH_TEXT_SECTIONS notes. */
insert_section_boundary_note ();
return 0;
}
struct tree_opt_pass pass_reorder_blocks =
@ -2267,7 +2269,7 @@ gate_handle_partition_blocks (void)
}
/* Partition hot and cold basic blocks. */
static void
static unsigned int
rest_of_handle_partition_blocks (void)
{
no_new_pseudos = 0;
@ -2276,6 +2278,7 @@ rest_of_handle_partition_blocks (void)
update_life_info (NULL, UPDATE_LIFE_GLOBAL_RM_NOTES,
PROP_LOG_LINKS | PROP_REG_INFO | PROP_DEATH_NOTES);
no_new_pseudos = 1;
return 0;
}
struct tree_opt_pass pass_partition_blocks =

View File

@ -1489,7 +1489,7 @@ gate_handle_branch_target_load_optimize (void)
}
static void
static unsigned int
rest_of_handle_branch_target_load_optimize (void)
{
static int warned = 0;
@ -1508,6 +1508,7 @@ rest_of_handle_branch_target_load_optimize (void)
}
branch_target_load_optimize (epilogue_completed);
return 0;
}
struct tree_opt_pass pass_branch_target_load_optimize =

View File

@ -2268,13 +2268,14 @@ cleanup_cfg (int mode)
return changed;
}
static void
static unsigned int
rest_of_handle_jump (void)
{
delete_unreachable_blocks ();
if (cfun->tail_call_emit)
fixup_tail_calls ();
return 0;
}
struct tree_opt_pass pass_jump =
@ -2296,7 +2297,7 @@ struct tree_opt_pass pass_jump =
};
static void
static unsigned int
rest_of_handle_jump2 (void)
{
/* Turn NOTE_INSN_EXPECTED_VALUE into REG_BR_PROB. Do this
@ -2324,6 +2325,7 @@ rest_of_handle_jump2 (void)
maximum instruction UID, so if we can reduce the maximum UID
we'll save big on memory. */
renumber_insns ();
return 0;
}

View File

@ -1572,7 +1572,7 @@ discover_nonconstant_array_refs (void)
confuse the CFG hooks, so be careful to not manipulate CFG during
the expansion. */
static void
static unsigned int
tree_expand_cfg (void)
{
basic_block bb, init_block;
@ -1685,6 +1685,7 @@ tree_expand_cfg (void)
/* After expanding, the return labels are no longer needed. */
return_label = NULL;
naked_return_label = NULL;
return 0;
}
struct tree_opt_pass pass_expand =

View File

@ -246,7 +246,7 @@ int epilogue_locator;
represented via INSN_NOTEs. Replace them by representation using
INSN_LOCATORs. */
void
unsigned int
insn_locators_initialize (void)
{
tree block = NULL;
@ -329,6 +329,7 @@ insn_locators_initialize (void)
set_block_levels (DECL_INITIAL (cfun->decl), 0);
free_block_changes ();
return 0;
}
struct tree_opt_pass pass_insn_locators_initialize =

View File

@ -27,7 +27,7 @@ extern rtx cfg_layout_function_footer;
extern void cfg_layout_initialize (unsigned int);
extern void cfg_layout_finalize (void);
extern void insn_locators_initialize (void);
extern unsigned int insn_locators_initialize (void);
extern void reemit_insn_block_notes (void);
extern bool can_copy_bbs_p (basic_block *, unsigned);
extern void copy_bbs (basic_block *, unsigned, basic_block *,

View File

@ -414,13 +414,14 @@ compute_bb_for_insn (void)
/* Release the basic_block_for_insn array. */
void
unsigned int
free_bb_for_insn (void)
{
rtx insn;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
if (!BARRIER_P (insn))
BLOCK_FOR_INSN (insn) = NULL;
return 0;
}
struct tree_opt_pass pass_free_cfg =

View File

@ -618,7 +618,7 @@ initialize_inline_failed (struct cgraph_node *node)
/* Rebuild call edges from current function after a passes not aware
of cgraph updating. */
static void
static unsigned int
rebuild_cgraph_edges (void)
{
basic_block bb;
@ -643,6 +643,7 @@ rebuild_cgraph_edges (void)
}
initialize_inline_failed (node);
gcc_assert (!node->global.inlined_to);
return 0;
}
struct tree_opt_pass pass_rebuild_cgraph_edges =

View File

@ -12578,7 +12578,7 @@ gate_handle_combine (void)
}
/* Try combining insns through substitution. */
static void
static unsigned int
rest_of_handle_combine (void)
{
int rebuild_jump_labels_after_combine
@ -12596,6 +12596,7 @@ rest_of_handle_combine (void)
delete_dead_jumptables ();
cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE);
}
return 0;
}
struct tree_opt_pass pass_combine =

View File

@ -7838,7 +7838,7 @@ gate_handle_cse (void)
return optimize > 0;
}
static void
static unsigned int
rest_of_handle_cse (void)
{
int tem;
@ -7865,6 +7865,7 @@ rest_of_handle_cse (void)
if (tem || optimize > 1)
cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
return 0;
}
struct tree_opt_pass pass_cse =
@ -7893,7 +7894,7 @@ gate_handle_cse2 (void)
}
/* Run second CSE pass after loop optimizations. */
static void
static unsigned int
rest_of_handle_cse2 (void)
{
int tem;
@ -7922,6 +7923,7 @@ rest_of_handle_cse2 (void)
}
reg_scan (get_insns (), max_reg_num ());
cse_not_expected = 1;
return 0;
}

View File

@ -2142,10 +2142,11 @@ unshare_all_rtl_again (rtx insn)
unshare_all_rtl_1 (cfun->decl, insn);
}
void
unsigned int
unshare_all_rtl (void)
{
unshare_all_rtl_1 (current_function_decl, get_insns ());
return 0;
}
struct tree_opt_pass pass_unshare_all_rtl =
@ -3678,7 +3679,7 @@ find_line_note (rtx insn)
/* Remove unnecessary notes from the instruction stream. */
void
unsigned int
remove_unnecessary_notes (void)
{
rtx eh_stack = NULL_RTX;
@ -3730,6 +3731,7 @@ remove_unnecessary_notes (void)
/* Too many EH_REGION_BEG notes. */
gcc_assert (!eh_stack);
return 0;
}
struct tree_opt_pass pass_remove_unnecessary_notes =

View File

@ -2694,7 +2694,7 @@ can_throw_external (rtx insn)
/* Set TREE_NOTHROW and cfun->all_throwers_are_sibcalls. */
void
unsigned int
set_nothrow_function_flags (void)
{
rtx insn;
@ -2710,7 +2710,7 @@ set_nothrow_function_flags (void)
cfun->all_throwers_are_sibcalls = 1;
if (! flag_exceptions)
return;
return 0;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
if (can_throw_external (insn))
@ -2720,7 +2720,7 @@ set_nothrow_function_flags (void)
if (!CALL_P (insn) || !SIBLING_CALL_P (insn))
{
cfun->all_throwers_are_sibcalls = 0;
return;
return 0;
}
}
@ -2733,9 +2733,10 @@ set_nothrow_function_flags (void)
if (!CALL_P (insn) || !SIBLING_CALL_P (insn))
{
cfun->all_throwers_are_sibcalls = 0;
return;
return 0;
}
}
return 0;
}
struct tree_opt_pass pass_set_nothrow_function_flags =
@ -3141,7 +3142,7 @@ add_call_site (rtx landing_pad, int action)
The new note numbers will not refer to region numbers, but
instead to call site entries. */
void
unsigned int
convert_to_eh_region_ranges (void)
{
rtx insn, iter, note;
@ -3153,7 +3154,7 @@ convert_to_eh_region_ranges (void)
int call_site = 0;
if (USING_SJLJ_EXCEPTIONS || cfun->eh->region_tree == NULL)
return;
return 0;
VARRAY_UCHAR_INIT (cfun->eh->action_record_data, 64, "action_record_data");
@ -3262,6 +3263,7 @@ convert_to_eh_region_ranges (void)
}
htab_delete (ar_hash);
return 0;
}
struct tree_opt_pass pass_convert_to_eh_region_ranges =
@ -3858,12 +3860,13 @@ gate_handle_eh (void)
}
/* Complete generation of exception handling code. */
static void
static unsigned int
rest_of_handle_eh (void)
{
cleanup_cfg (CLEANUP_PRE_LOOP | CLEANUP_NO_INSN_DEL);
finish_eh_generation ();
cleanup_cfg (CLEANUP_PRE_LOOP | CLEANUP_NO_INSN_DEL);
return 0;
}
struct tree_opt_pass pass_rtl_eh =

View File

@ -52,7 +52,7 @@ extern bool can_throw_external_1 (int, bool);
extern bool can_throw_external (rtx);
/* Set TREE_NOTHROW and cfun->all_throwers_are_sibcalls. */
extern void set_nothrow_function_flags (void);
extern unsigned int set_nothrow_function_flags (void);
/* After initial rtl generation, call back to finish generating
exception support code. */
@ -65,7 +65,7 @@ extern rtx reachable_handlers (rtx);
extern void maybe_remove_eh_handler (rtx);
extern void convert_from_eh_region_ranges (void);
extern void convert_to_eh_region_ranges (void);
extern unsigned int convert_to_eh_region_ranges (void);
extern void find_exception_handler_labels (void);
extern bool current_function_has_exception_handlers (void);
extern void output_function_exception_table (void);

View File

@ -679,7 +679,7 @@ insn_current_reference_address (rtx branch)
/* Compute branch alignments based on frequency information in the
CFG. */
static void
static unsigned int
compute_alignments (void)
{
int log, max_skip, max_log;
@ -697,7 +697,7 @@ compute_alignments (void)
/* If not optimizing or optimizing for size, don't assign any alignments. */
if (! optimize || optimize_size)
return;
return 0;
FOR_EACH_BB (bb)
{
@ -760,6 +760,7 @@ compute_alignments (void)
LABEL_TO_ALIGNMENT (label) = max_log;
LABEL_TO_MAX_SKIP (label) = max_skip;
}
return 0;
}
struct tree_opt_pass pass_compute_alignments =
@ -3903,7 +3904,7 @@ debug_free_queue (void)
}
/* Turn the RTL into assembly. */
static void
static unsigned int
rest_of_handle_final (void)
{
rtx x;
@ -3958,6 +3959,7 @@ rest_of_handle_final (void)
timevar_push (TV_SYMOUT);
(*debug_hooks->function_decl) (current_function_decl);
timevar_pop (TV_SYMOUT);
return 0;
}
struct tree_opt_pass pass_final =
@ -3978,11 +3980,12 @@ struct tree_opt_pass pass_final =
};
static void
static unsigned int
rest_of_handle_shorten_branches (void)
{
/* Shorten branches. */
shorten_branches (get_insns ());
return 0;
}
struct tree_opt_pass pass_shorten_branches =
@ -4003,7 +4006,7 @@ struct tree_opt_pass pass_shorten_branches =
};
static void
static unsigned int
rest_of_clean_state (void)
{
rtx insn, next;
@ -4065,6 +4068,7 @@ rest_of_clean_state (void)
/* We're done with this function. Free up memory if we can. */
free_after_parsing (cfun);
free_after_compilation (cfun);
return 0;
}
struct tree_opt_pass pass_clean_state =

View File

@ -4409,7 +4409,7 @@ debug_regset (regset r)
It might be worthwhile to update REG_LIVE_LENGTH, REG_BASIC_BLOCK and
possibly other information which is used by the register allocators. */
void
unsigned int
recompute_reg_usage (void)
{
allocate_reg_life_data ();
@ -4421,6 +4421,7 @@ recompute_reg_usage (void)
if (dump_file)
dump_flow_info (dump_file, dump_flags);
return 0;
}
struct tree_opt_pass pass_recompute_reg_usage =
@ -4608,10 +4609,11 @@ gate_remove_death_notes (void)
return flag_profile_values;
}
static void
static unsigned int
rest_of_handle_remove_death_notes (void)
{
count_or_remove_death_notes (NULL, 1);
return 0;
}
struct tree_opt_pass pass_remove_death_notes =
@ -4632,7 +4634,7 @@ struct tree_opt_pass pass_remove_death_notes =
};
/* Perform life analysis. */
static void
static unsigned int
rest_of_handle_life (void)
{
regclass_init ();
@ -4661,6 +4663,7 @@ rest_of_handle_life (void)
}
no_new_pseudos = 1;
return 0;
}
struct tree_opt_pass pass_life =
@ -4681,7 +4684,7 @@ struct tree_opt_pass pass_life =
'f' /* letter */
};
static void
static unsigned int
rest_of_handle_flow2 (void)
{
/* If optimizing, then go ahead and split insns now. */
@ -4703,6 +4706,7 @@ rest_of_handle_flow2 (void)
thread_prologue_and_epilogue_insns (get_insns ());
epilogue_completed = 1;
flow2_completed = 1;
return 0;
}
struct tree_opt_pass pass_flow2 =

View File

@ -1665,7 +1665,7 @@ instantiate_decls (tree fndecl)
/* Pass through the INSNS of function FNDECL and convert virtual register
references to hard register references. */
static void
static unsigned int
instantiate_virtual_regs (void)
{
rtx insn;
@ -1717,6 +1717,7 @@ instantiate_virtual_regs (void)
/* Indicate that, from now on, assign_stack_local should use
frame_pointer_rtx. */
virtuals_instantiated = 1;
return 0;
}
struct tree_opt_pass pass_instantiate_virtual_regs =
@ -3934,7 +3935,7 @@ init_function_start (tree subr)
/* Make sure all values used by the optimization passes have sane
defaults. */
void
unsigned int
init_function_for_compilation (void)
{
reg_renumber = 0;
@ -3944,6 +3945,7 @@ init_function_for_compilation (void)
gcc_assert (VEC_length (int, prologue) == 0);
gcc_assert (VEC_length (int, epilogue) == 0);
gcc_assert (VEC_length (int, sibcall_epilogue) == 0);
return 0;
}
struct tree_opt_pass pass_init_function =
@ -5568,13 +5570,14 @@ current_function_name (void)
}
static void
static unsigned int
rest_of_handle_check_leaf_regs (void)
{
#ifdef LEAF_REGISTERS
current_function_uses_only_leaf_regs
= optimize > 0 && only_leaf_regs_used () && leaf_function_p ();
#endif
return 0;
}
struct tree_opt_pass pass_leaf_regs =

View File

@ -6621,7 +6621,7 @@ gate_handle_jump_bypass (void)
}
/* Perform jump bypassing and control flow optimizations. */
static void
static unsigned int
rest_of_handle_jump_bypass (void)
{
cleanup_cfg (CLEANUP_EXPENSIVE);
@ -6633,6 +6633,7 @@ rest_of_handle_jump_bypass (void)
cleanup_cfg (CLEANUP_EXPENSIVE);
delete_trivially_dead_insns (get_insns (), max_reg_num ());
}
return 0;
}
struct tree_opt_pass pass_jump_bypass =
@ -6661,7 +6662,7 @@ gate_handle_gcse (void)
}
static void
static unsigned int
rest_of_handle_gcse (void)
{
int save_csb, save_cfj;
@ -6701,6 +6702,7 @@ rest_of_handle_gcse (void)
flag_cse_skip_blocks = save_csb;
flag_cse_follow_jumps = save_cfj;
return 0;
}
struct tree_opt_pass pass_gcse =

View File

@ -58,7 +58,7 @@ static void lower_return_expr (tree_stmt_iterator *, struct lower_data *);
/* Lowers the body of current_function_decl. */
static void
static unsigned int
lower_function_body (void)
{
struct lower_data data;
@ -118,6 +118,7 @@ lower_function_body (void)
= blocks_nreverse (BLOCK_SUBBLOCKS (data.block));
clear_block_marks (data.block);
return 0;
}
struct tree_opt_pass pass_lower_cf =
@ -610,10 +611,11 @@ mark_blocks_with_used_vars (tree block)
/* Mark the used attribute on blocks correctly. */
static void
static unsigned int
mark_used_blocks (void)
{
mark_blocks_with_used_vars (DECL_INITIAL (current_function_decl));
return 0;
}

View File

@ -2499,7 +2499,7 @@ make_accurate_live_analysis (void)
}
/* Run old register allocator. Return TRUE if we must exit
rest_of_compilation upon return. */
static void
static unsigned int
rest_of_handle_global_alloc (void)
{
bool failure;
@ -2524,6 +2524,7 @@ rest_of_handle_global_alloc (void)
gcc_assert (reload_completed || failure);
reload_completed = !failure;
return 0;
}
struct tree_opt_pass pass_global_alloc =

View File

@ -3896,7 +3896,7 @@ gate_handle_if_conversion (void)
}
/* If-conversion and CFG cleanup. */
static void
static unsigned int
rest_of_handle_if_conversion (void)
{
if (flag_if_conversion)
@ -3912,6 +3912,7 @@ rest_of_handle_if_conversion (void)
cleanup_cfg (CLEANUP_EXPENSIVE);
reg_scan (get_insns (), max_reg_num ());
timevar_pop (TV_JUMP);
return 0;
}
struct tree_opt_pass pass_rtl_ifcvt =
@ -3940,12 +3941,13 @@ gate_handle_if_after_combine (void)
/* Rerun if-conversion, as combine may have simplified things enough
to now meet sequence length restrictions. */
static void
static unsigned int
rest_of_handle_if_after_combine (void)
{
no_new_pseudos = 0;
if_convert (1);
no_new_pseudos = 1;
return 0;
}
struct tree_opt_pass pass_if_after_combine =
@ -3973,7 +3975,7 @@ gate_handle_if_after_reload (void)
return (optimize > 0);
}
static void
static unsigned int
rest_of_handle_if_after_reload (void)
{
/* Last attempt to optimize CFG, as scheduling, peepholing and insn
@ -3983,6 +3985,7 @@ rest_of_handle_if_after_reload (void)
| (flag_crossjumping ? CLEANUP_CROSSJUMP : 0));
if (flag_if_conversion2)
if_convert (1);
return 0;
}

View File

@ -278,7 +278,7 @@ has_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
return NULL_RTX;
}
void
unsigned int
emit_initial_value_sets (void)
{
struct initial_value_struct *ivs = cfun->hard_reg_initial_vals;
@ -286,7 +286,7 @@ emit_initial_value_sets (void)
rtx seq;
if (ivs == 0)
return;
return 0;
start_sequence ();
for (i = 0; i < ivs->num_entries; i++)
@ -295,6 +295,7 @@ emit_initial_value_sets (void)
end_sequence ();
emit_insn_after (seq, entry_of_function ());
return 0;
}
struct tree_opt_pass pass_initial_value_sets =

View File

@ -27,7 +27,7 @@ extern rtx has_hard_reg_initial_val (enum machine_mode, unsigned int);
it, else return NULL_RTX. */
extern rtx get_hard_reg_initial_reg (struct function *, rtx);
/* Called from rest_of_compilation. */
extern void emit_initial_value_sets (void);
extern unsigned int emit_initial_value_sets (void);
extern void allocate_initial_values (rtx *);
/* Check whether there's any attribute in a function declaration that

View File

@ -1079,7 +1079,7 @@ ipcp_insert_stage (void)
}
/* The IPCP driver. */
void
unsigned int
ipcp_driver (void)
{
if (dump_file)
@ -1117,6 +1117,7 @@ ipcp_driver (void)
if (dump_file)
fprintf (dump_file, "\nIPA constant propagation end\n");
cgraph_remove_unreachable_nodes (true, NULL);
return 0;
}
/* Gate for IPCP optimization. */

View File

@ -863,7 +863,7 @@ cgraph_decide_inlining_of_small_functions (void)
/* Decide on the inlining. We do so in the topological order to avoid
expenses on updating data structures. */
static void
static unsigned int
cgraph_decide_inlining (void)
{
struct cgraph_node *node;
@ -1034,6 +1034,7 @@ cgraph_decide_inlining (void)
overall_insns);
free (order);
timevar_pop (TV_INLINE_HEURISTICS);
return 0;
}
/* Decide on the inlining. We do so in the topological order to avoid
@ -1132,7 +1133,7 @@ struct tree_opt_pass pass_ipa_inline =
/* Do inlining of small functions. Doing so early helps profiling and other
passes to be somewhat more effective and avoids some code duplication in
later real inlining pass for testcases with very many function calls. */
static void
static unsigned int
cgraph_early_inlining (void)
{
struct cgraph_node *node;
@ -1142,7 +1143,7 @@ cgraph_early_inlining (void)
int i;
if (sorrycount || errorcount)
return;
return 0;
#ifdef ENABLE_CHECKING
for (node = cgraph_nodes; node; node = node->next)
gcc_assert (!node->aux);
@ -1163,6 +1164,7 @@ cgraph_early_inlining (void)
gcc_assert (!node->global.inlined_to);
#endif
free (order);
return 0;
}
/* When inlining shall be performed. */

View File

@ -199,6 +199,6 @@ void ipa_nodes_free (void);
void ipa_method_tree_print (FILE *);
void ipa_method_modify_print (FILE *);
void ipcp_driver (void);
unsigned int ipcp_driver (void);
#endif /* IPA_PROP_H */

View File

@ -572,7 +572,7 @@ analyze_function (struct cgraph_node *fn)
on the local information that was produced by ipa_analyze_function
and ipa_analyze_variable. */
static void
static unsigned int
static_execute (void)
{
struct cgraph_node *node;
@ -703,6 +703,7 @@ static_execute (void)
}
free (order);
return 0;
}
static bool

View File

@ -888,7 +888,7 @@ clean_function (struct cgraph_node *fn)
on the local information that was produced by ipa_analyze_function
and ipa_analyze_variable. */
static void
static unsigned int
static_execute (void)
{
struct cgraph_node *node;
@ -1302,6 +1302,7 @@ static_execute (void)
&& (cgraph_function_body_availability (node) == AVAIL_OVERWRITABLE))
clean_function (node);
}
return 0;
}

View File

@ -1670,7 +1670,7 @@ close_addressof_down (int uid)
/* The main entry point for type escape analysis. */
static void
static unsigned int
type_escape_execute (void)
{
struct cgraph_node *node;
@ -1817,6 +1817,7 @@ type_escape_execute (void)
BITMAP_FREE (been_there_done_that);
BITMAP_FREE (bitmap_tmp);
BITMAP_FREE (results_of_malloc);
return 0;
}
static bool

View File

@ -104,7 +104,7 @@ rebuild_jump_labels (rtx f)
This simple pass moves barriers and removes duplicates so that the
old code is happy.
*/
void
unsigned int
cleanup_barriers (void)
{
rtx insn, next, prev;
@ -120,6 +120,7 @@ cleanup_barriers (void)
reorder_insns (insn, insn, prev);
}
}
return 0;
}
struct tree_opt_pass pass_cleanup_barriers =
@ -139,7 +140,7 @@ struct tree_opt_pass pass_cleanup_barriers =
0 /* letter */
};
void
unsigned int
purge_line_number_notes (void)
{
rtx last_note = 0;
@ -175,6 +176,7 @@ purge_line_number_notes (void)
last_note = insn;
}
}
return 0;
}
struct tree_opt_pass pass_purge_lineno_notes =

View File

@ -2523,7 +2523,7 @@ dump_local_alloc (FILE *file)
/* Run old register allocator. Return TRUE if we must exit
rest_of_compilation upon return. */
static void
static unsigned int
rest_of_handle_local_alloc (void)
{
int rebuild_notes;
@ -2566,6 +2566,7 @@ rest_of_handle_local_alloc (void)
dump_local_alloc (dump_file);
timevar_pop (TV_DUMP);
}
return 0;
}
struct tree_opt_pass pass_local_alloc =

View File

@ -164,7 +164,7 @@ struct tree_opt_pass pass_loop2 =
/* Initialization of the RTL loop passes. */
static void
static unsigned int
rtl_loop_init (void)
{
if (dump_file)
@ -174,6 +174,7 @@ rtl_loop_init (void)
cfg_layout_initialize (0);
current_loops = loop_optimizer_init (LOOPS_NORMAL);
return 0;
}
struct tree_opt_pass pass_rtl_loop_init =
@ -195,7 +196,7 @@ struct tree_opt_pass pass_rtl_loop_init =
/* Finalization of the RTL loop passes. */
static void
static unsigned int
rtl_loop_done (void)
{
basic_block bb;
@ -218,6 +219,7 @@ rtl_loop_done (void)
dump_flow_info (dump_file, dump_flags);
current_loops = NULL;
return 0;
}
struct tree_opt_pass pass_rtl_loop_done =
@ -245,11 +247,12 @@ gate_rtl_move_loop_invariants (void)
return flag_move_loop_invariants;
}
static void
static unsigned int
rtl_move_loop_invariants (void)
{
if (current_loops)
move_loop_invariants (current_loops);
return 0;
}
struct tree_opt_pass pass_rtl_move_loop_invariants =
@ -277,11 +280,12 @@ gate_rtl_unswitch (void)
return flag_unswitch_loops;
}
static void
static unsigned int
rtl_unswitch (void)
{
if (current_loops)
unswitch_loops (current_loops);
return 0;
}
struct tree_opt_pass pass_rtl_unswitch =
@ -309,7 +313,7 @@ gate_rtl_unroll_and_peel_loops (void)
return (flag_peel_loops || flag_unroll_loops || flag_unroll_all_loops);
}
static void
static unsigned int
rtl_unroll_and_peel_loops (void)
{
if (current_loops)
@ -325,6 +329,7 @@ rtl_unroll_and_peel_loops (void)
unroll_and_peel_loops (current_loops, flags);
}
return 0;
}
struct tree_opt_pass pass_rtl_unroll_and_peel_loops =
@ -356,13 +361,14 @@ gate_rtl_doloop (void)
#endif
}
static void
static unsigned int
rtl_doloop (void)
{
#ifdef HAVE_doloop_end
if (current_loops)
doloop_optimize_loops (current_loops);
#endif
return 0;
}
struct tree_opt_pass pass_rtl_doloop =

View File

@ -735,7 +735,7 @@ gate_mode_switching (void)
#endif
}
static void
static unsigned int
rest_of_handle_mode_switching (void)
{
#ifdef OPTIMIZE_MODE_SWITCHING
@ -743,6 +743,7 @@ rest_of_handle_mode_switching (void)
optimize_mode_switching ();
no_new_pseudos = 1;
#endif /* OPTIMIZE_MODE_SWITCHING */
return 0;
}

View File

@ -2500,7 +2500,7 @@ gate_handle_sms (void)
/* Run instruction scheduler. */
/* Perform SMS module scheduling. */
static void
static unsigned int
rest_of_handle_sms (void)
{
#ifdef INSN_SCHEDULING
@ -2530,6 +2530,7 @@ rest_of_handle_sms (void)
cfg_layout_finalize ();
free_dominance_info (CDI_DOMINATORS);
#endif /* INSN_SCHEDULING */
return 0;
}
struct tree_opt_pass pass_sms =

View File

@ -3331,7 +3331,7 @@ build_omp_regions (void)
/* Main entry point for expanding OMP-GIMPLE into runtime calls. */
static void
static unsigned int
execute_expand_omp (void)
{
build_omp_regions ();
@ -3350,6 +3350,7 @@ execute_expand_omp (void)
root_omp_region = NULL;
omp_regions = NULL;
}
return 0;
}
static bool
@ -4105,7 +4106,7 @@ lower_omp (tree *stmt_p, omp_context *ctx)
/* Main entry point. */
static void
static unsigned int
execute_lower_omp (void)
{
all_contexts = splay_tree_new (splay_tree_compare_pointers, 0,
@ -4122,6 +4123,7 @@ execute_lower_omp (void)
splay_tree_delete (all_contexts);
all_contexts = NULL;
}
return 0;
}
static bool

View File

@ -807,6 +807,7 @@ static bool
execute_one_pass (struct tree_opt_pass *pass)
{
bool initializing_dump;
unsigned int todo_after = 0;
/* See if we're supposed to run this pass. */
if (pass->gate && !pass->gate ())
@ -858,7 +859,7 @@ execute_one_pass (struct tree_opt_pass *pass)
/* Do it! */
if (pass->execute)
{
pass->execute ();
todo_after = pass->execute ();
last_verified = 0;
}
@ -880,7 +881,7 @@ execute_one_pass (struct tree_opt_pass *pass)
}
/* Run post-pass cleanup and verification. */
execute_todo (pass->todo_flags_finish);
execute_todo (todo_after | pass->todo_flags_finish);
/* Flush and close dump file. */
if (dump_file_name)

View File

@ -1365,12 +1365,13 @@ gate_handle_gcse2 (void)
}
static void
static unsigned int
rest_of_handle_gcse2 (void)
{
gcse_after_reload_main (get_insns ());
rebuild_jump_labels (get_insns ());
delete_trivially_dead_insns (get_insns (), max_reg_num ());
return 0;
}
struct tree_opt_pass pass_gcse2 =

View File

@ -1572,7 +1572,7 @@ gate_handle_postreload (void)
}
static void
static unsigned int
rest_of_handle_postreload (void)
{
/* Do a very simple CSE pass over just the hard registers. */
@ -1581,6 +1581,7 @@ rest_of_handle_postreload (void)
Remove any EH edges associated with them. */
if (flag_non_call_exceptions)
purge_all_dead_edges ();
return 0;
}
struct tree_opt_pass pass_postreload_cse =

View File

@ -1308,7 +1308,7 @@ call_expr:;
}
/* Predict branch probabilities and estimate profile of the tree CFG. */
static void
static unsigned int
tree_estimate_probability (void)
{
basic_block bb;
@ -1396,6 +1396,7 @@ tree_estimate_probability (void)
dump_tree_cfg (dump_file, dump_flags);
if (profile_status == PROFILE_ABSENT)
profile_status = PROFILE_GUESSED;
return 0;
}
/* __builtin_expect dropped tokens into the insn stream describing expected

View File

@ -1338,7 +1338,7 @@ tree_register_profile_hooks (void)
/* Do branch profiling and static profile estimation passes. */
static void
static unsigned int
rest_of_handle_branch_prob (void)
{
struct loops loops;
@ -1357,6 +1357,7 @@ rest_of_handle_branch_prob (void)
flow_loops_free (&loops);
free_dominance_info (CDI_DOMINATORS);
return 0;
}
struct tree_opt_pass pass_branch_prob =

View File

@ -2813,7 +2813,7 @@ split_all_insns (int upd_life)
/* Same as split_all_insns, but do not expect CFG to be available.
Used by machine dependent reorg passes. */
void
unsigned int
split_all_insns_noflow (void)
{
rtx next, insn;
@ -2843,6 +2843,7 @@ split_all_insns_noflow (void)
split_insn (insn);
}
}
return 0;
}
#ifdef HAVE_peephole2
@ -3446,12 +3447,13 @@ gate_handle_peephole2 (void)
return (optimize > 0 && flag_peephole2);
}
static void
static unsigned int
rest_of_handle_peephole2 (void)
{
#ifdef HAVE_peephole2
peephole2_optimize ();
#endif
return 0;
}
struct tree_opt_pass pass_peephole2 =
@ -3471,10 +3473,11 @@ struct tree_opt_pass pass_peephole2 =
'z' /* letter */
};
static void
static unsigned int
rest_of_handle_split_all_insns (void)
{
split_all_insns (1);
return 0;
}
struct tree_opt_pass pass_split_all_insns =

View File

@ -3136,7 +3136,7 @@ gate_handle_stack_regs (void)
/* Convert register usage from flat register file usage to a stack
register file. */
static void
static unsigned int
rest_of_handle_stack_regs (void)
{
#ifdef STACK_REGS
@ -3151,6 +3151,7 @@ rest_of_handle_stack_regs (void)
}
}
#endif
return 0;
}
struct tree_opt_pass pass_stack_regs =

View File

@ -2470,11 +2470,12 @@ gate_handle_regmove (void)
/* Register allocation pre-pass, to reduce number of moves necessary
for two-address machines. */
static void
static unsigned int
rest_of_handle_regmove (void)
{
regmove_optimize (get_insns (), max_reg_num ());
cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_UPDATE_LIFE);
return 0;
}
struct tree_opt_pass pass_regmove =
@ -2502,7 +2503,7 @@ gate_handle_stack_adjustments (void)
return (optimize > 0);
}
static void
static unsigned int
rest_of_handle_stack_adjustments (void)
{
life_analysis (PROP_POSTRELOAD);
@ -2517,6 +2518,7 @@ rest_of_handle_stack_adjustments (void)
if (!ACCUMULATE_OUTGOING_ARGS)
#endif
combine_stack_adjustments ();
return 0;
}
struct tree_opt_pass pass_stack_adjustments =

View File

@ -1953,13 +1953,14 @@ gate_handle_regrename (void)
/* Run the regrename and cprop passes. */
static void
static unsigned int
rest_of_handle_regrename (void)
{
if (flag_rename_registers)
regrename_optimize ();
if (flag_cprop_registers)
copyprop_hardreg_forward ();
return 0;
}
struct tree_opt_pass pass_regrename =

View File

@ -3775,12 +3775,13 @@ gate_handle_delay_slots (void)
}
/* Run delay slot optimization. */
static void
static unsigned int
rest_of_handle_delay_slots (void)
{
#ifdef DELAY_SLOTS
dbr_schedule (get_insns ());
#endif
return 0;
}
struct tree_opt_pass pass_delay_slots =
@ -3809,10 +3810,11 @@ gate_handle_machine_reorg (void)
}
static void
static unsigned int
rest_of_handle_machine_reorg (void)
{
targetm.machine_dependent_reorg ();
return 0;
}
struct tree_opt_pass pass_machine_reorg =

View File

@ -1414,7 +1414,7 @@ gate_rtl_seqabstr (void)
/* The entry point of the sequence abstraction algorithm. */
static void
static unsigned int
rest_of_rtl_seqabstr (void)
{
life_analysis (PROP_DEATH_NOTES | PROP_SCAN_DEAD_CODE | PROP_KILL_DEAD_CODE);
@ -1425,6 +1425,7 @@ rest_of_rtl_seqabstr (void)
/* Abstract out common insn sequences. */
rtl_seqabstr ();
return 0;
}
struct tree_opt_pass pass_rtl_seqabstr = {

View File

@ -1600,7 +1600,7 @@ extern enum rtx_code swap_condition (enum rtx_code);
extern enum rtx_code unsigned_condition (enum rtx_code);
extern enum rtx_code signed_condition (enum rtx_code);
extern void mark_jump_label (rtx, rtx, int);
extern void cleanup_barriers (void);
extern unsigned int cleanup_barriers (void);
/* In jump.c */
extern bool squeeze_notes (rtx *, rtx *);
@ -1781,7 +1781,7 @@ extern enum reg_class reg_preferred_class (int);
extern enum reg_class reg_alternate_class (int);
extern void split_all_insns (int);
extern void split_all_insns_noflow (void);
extern unsigned int split_all_insns_noflow (void);
#define MAX_SAVED_CONST_INT 64
extern GTY(()) rtx const_int_rtx[MAX_SAVED_CONST_INT * 2 + 1];
@ -2027,7 +2027,7 @@ extern enum rtx_code reversed_comparison_code_parts (enum rtx_code,
rtx, rtx, rtx);
extern void delete_for_peephole (rtx, rtx);
extern int condjump_in_parallel_p (rtx);
extern void purge_line_number_notes (void);
extern unsigned int purge_line_number_notes (void);
/* In emit-rtl.c. */
extern int max_reg_num (void);
@ -2049,7 +2049,7 @@ extern void init_emit_once (int);
extern void push_topmost_sequence (void);
extern void pop_topmost_sequence (void);
extern void set_new_first_and_last_insn (rtx, rtx);
extern void unshare_all_rtl (void);
extern unsigned int unshare_all_rtl (void);
extern void unshare_all_rtl_again (rtx);
extern void unshare_all_rtl_in_chain (rtx);
extern void verify_rtl_sharing (void);
@ -2063,7 +2063,7 @@ extern void remove_insn (rtx);
extern void emit_insn_after_with_line_notes (rtx, rtx, rtx);
extern rtx emit (rtx);
extern void renumber_insns (void);
extern void remove_unnecessary_notes (void);
extern unsigned int remove_unnecessary_notes (void);
extern rtx delete_insn (rtx);
extern rtx entry_of_function (void);
extern void delete_insn_chain (rtx, rtx);
@ -2133,7 +2133,7 @@ extern rtx move_by_pieces (rtx, rtx, unsigned HOST_WIDE_INT,
unsigned int, int);
/* In flow.c */
extern void recompute_reg_usage (void);
extern unsigned int recompute_reg_usage (void);
extern void delete_dead_jumptables (void);
extern void print_rtl_with_bb (FILE *, rtx);
extern void dump_flow_info (FILE *, int);
@ -2256,7 +2256,7 @@ extern bool expensive_function_p (int);
extern void tracer (unsigned int);
/* In var-tracking.c */
extern void variable_tracking_main (void);
extern unsigned int variable_tracking_main (void);
/* In stor-layout.c. */
extern void get_mode_bounds (enum machine_mode, int, enum machine_mode,

View File

@ -2635,7 +2635,7 @@ gate_handle_sched (void)
}
/* Run instruction scheduler. */
static void
static unsigned int
rest_of_handle_sched (void)
{
#ifdef INSN_SCHEDULING
@ -2644,6 +2644,7 @@ rest_of_handle_sched (void)
schedule_insns ();
#endif
return 0;
}
static bool
@ -2657,7 +2658,7 @@ gate_handle_sched2 (void)
}
/* Run second scheduling pass after reload. */
static void
static unsigned int
rest_of_handle_sched2 (void)
{
#ifdef INSN_SCHEDULING
@ -2677,6 +2678,7 @@ rest_of_handle_sched2 (void)
else
schedule_insns ();
#endif
return 0;
}
struct tree_opt_pass pass_sched =

View File

@ -387,7 +387,7 @@ gate_handle_tracer (void)
}
/* Run tracer. */
static void
static unsigned int
rest_of_handle_tracer (void)
{
if (dump_file)
@ -395,6 +395,7 @@ rest_of_handle_tracer (void)
tracer (0);
cleanup_cfg (CLEANUP_EXPENSIVE);
reg_scan (get_insns (), max_reg_num ());
return 0;
}
struct tree_opt_pass pass_tracer =

View File

@ -106,7 +106,7 @@ static void make_switch_expr_edges (basic_block);
static void make_goto_expr_edges (basic_block);
static edge tree_redirect_edge_and_branch (edge, basic_block);
static edge tree_try_redirect_by_replacing_jump (edge, basic_block);
static void split_critical_edges (void);
static unsigned int split_critical_edges (void);
/* Various helpers. */
static inline bool stmt_starts_bb_p (tree, tree);
@ -224,10 +224,11 @@ build_tree_cfg (tree *tp)
dump_tree_cfg (dump_file, dump_flags);
}
static void
static unsigned int
execute_build_cfg (void)
{
build_tree_cfg (&DECL_SAVED_TREE (current_function_decl));
return 0;
}
struct tree_opt_pass pass_build_cfg =
@ -1994,7 +1995,7 @@ remove_useless_stmts_1 (tree *tp, struct rus_data *data)
}
}
static void
static unsigned int
remove_useless_stmts (void)
{
struct rus_data data;
@ -2007,6 +2008,7 @@ remove_useless_stmts (void)
remove_useless_stmts_1 (&DECL_SAVED_TREE (current_function_decl), &data);
}
while (data.repeat);
return 0;
}
@ -5445,7 +5447,7 @@ struct cfg_hooks tree_cfg_hooks = {
/* Split all critical edges. */
static void
static unsigned int
split_critical_edges (void)
{
basic_block bb;
@ -5465,6 +5467,7 @@ split_critical_edges (void)
}
}
end_recording_case_labels ();
return 0;
}
struct tree_opt_pass pass_split_crit_edges =
@ -5559,7 +5562,7 @@ gimplify_build1 (block_stmt_iterator *bsi, enum tree_code code, tree type,
/* Emit return warnings. */
static void
static unsigned int
execute_warn_function_return (void)
{
#ifdef USE_MAPPED_LOCATION
@ -5632,6 +5635,7 @@ execute_warn_function_return (void)
}
}
}
return 0;
}
@ -5678,7 +5682,7 @@ struct tree_opt_pass pass_warn_function_return =
/* Emit noreturn warnings. */
static void
static unsigned int
execute_warn_function_noreturn (void)
{
if (warn_missing_noreturn
@ -5688,6 +5692,7 @@ execute_warn_function_noreturn (void)
warning (OPT_Wmissing_noreturn, "%Jfunction might be possible candidate "
"for attribute %<noreturn%>",
cfun->decl);
return 0;
}
struct tree_opt_pass pass_warn_function_noreturn =

View File

@ -717,7 +717,7 @@ remove_forwarder_block_with_phi (basic_block bb)
<L10>:;
*/
static void
static unsigned int
merge_phi_nodes (void)
{
basic_block *worklist = XNEWVEC (basic_block, n_basic_blocks);
@ -797,6 +797,7 @@ merge_phi_nodes (void)
}
free (worklist);
return 0;
}
static bool

View File

@ -1480,7 +1480,7 @@ expand_complex_operations_1 (block_stmt_iterator *bsi)
/* Entry point for complex operation lowering during optimization. */
static void
static unsigned int
tree_lower_complex (void)
{
int old_last_basic_block;
@ -1488,7 +1488,7 @@ tree_lower_complex (void)
basic_block bb;
if (!init_dont_simulate_again ())
return;
return 0;
complex_lattice_values = VEC_alloc (complex_lattice_t, heap, num_ssa_names);
VEC_safe_grow (complex_lattice_t, heap,
@ -1525,6 +1525,7 @@ tree_lower_complex (void)
htab_delete (complex_variable_components);
VEC_free (tree, heap, complex_ssa_name_components);
VEC_free (complex_lattice_t, heap, complex_lattice_values);
return 0;
}
struct tree_opt_pass pass_lower_complex =
@ -1549,7 +1550,7 @@ struct tree_opt_pass pass_lower_complex =
/* Entry point for complex operation lowering without optimization. */
static void
static unsigned int
tree_lower_complex_O0 (void)
{
int old_last_basic_block = last_basic_block;
@ -1563,6 +1564,7 @@ tree_lower_complex_O0 (void)
for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
expand_complex_operations_1 (&bsi);
}
return 0;
}
static bool

View File

@ -103,7 +103,7 @@ htab_t default_defs;
various attributes for each variable used by alias analysis and the
optimizer. */
static void
static unsigned int
find_referenced_vars (void)
{
htab_t vars_found;
@ -123,6 +123,7 @@ find_referenced_vars (void)
}
htab_delete (vars_found);
return 0;
}
struct tree_opt_pass pass_referenced_vars =

View File

@ -1671,7 +1671,7 @@ lower_eh_constructs_1 (struct leh_state *state, tree *tp)
}
}
static void
static unsigned int
lower_eh_constructs (void)
{
struct leh_state null_state;
@ -1687,6 +1687,7 @@ lower_eh_constructs (void)
htab_delete (finally_tree);
collect_eh_region_array ();
return 0;
}
struct tree_opt_pass pass_lower_eh =

View File

@ -102,7 +102,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#include "target.h"
/* local function prototypes */
static void main_tree_if_conversion (void);
static unsigned int main_tree_if_conversion (void);
static tree tree_if_convert_stmt (struct loop *loop, tree, tree,
block_stmt_iterator *);
static void tree_if_convert_cond_expr (struct loop *, tree, tree,
@ -1098,14 +1098,14 @@ bb_with_exit_edge_p (struct loop *loop, basic_block bb)
/* Tree if-conversion pass management. */
static void
static unsigned int
main_tree_if_conversion (void)
{
unsigned i, loop_num;
struct loop *loop;
if (!current_loops)
return;
return 0;
loop_num = current_loops->num;
for (i = 0; i < loop_num; i++)
@ -1116,7 +1116,7 @@ main_tree_if_conversion (void)
tree_if_conversion (loop, true);
}
return 0;
}
static bool

View File

@ -1731,7 +1731,7 @@ mark_def_site_blocks (sbitmap interesting_blocks)
Steps 3 and 4 are done using the dominator tree walker
(walk_dominator_tree). */
static void
static unsigned int
rewrite_into_ssa (void)
{
bitmap *dfs;
@ -1775,6 +1775,7 @@ rewrite_into_ssa (void)
timevar_pop (TV_TREE_SSA_OTHER);
in_ssa_p = true;
return 0;
}

View File

@ -57,13 +57,13 @@ static tree mf_file_function_line_tree (location_t);
static void mf_decl_cache_locals (void);
static void mf_decl_clear_locals (void);
static void mf_xform_derefs (void);
static void execute_mudflap_function_ops (void);
static unsigned int execute_mudflap_function_ops (void);
/* Addressable variables instrumentation. */
static void mf_xform_decls (tree, tree);
static tree mx_xfn_xform_decls (tree *, int *, void *);
static void mx_register_decls (tree, tree *);
static void execute_mudflap_function_decls (void);
static unsigned int execute_mudflap_function_decls (void);
/* ------------------------------------------------------------------------ */
@ -409,14 +409,14 @@ mudflap_init (void)
tree optimizations have been performed, but we have to preserve the CFG
for expansion from trees to RTL. */
static void
static unsigned int
execute_mudflap_function_ops (void)
{
/* Don't instrument functions such as the synthetic constructor
built during mudflap_finish_file. */
if (mf_marked_p (current_function_decl) ||
DECL_ARTIFICIAL (current_function_decl))
return;
return 0;
push_gimplify_context ();
@ -430,6 +430,7 @@ execute_mudflap_function_ops (void)
mf_decl_clear_locals ();
pop_gimplify_context (NULL);
return 0;
}
/* Create and initialize local shadow variables for the lookup cache
@ -940,14 +941,14 @@ mf_xform_derefs (void)
of their BIND_EXPR binding context, and we lose liveness information
for the declarations we wish to instrument. */
static void
static unsigned int
execute_mudflap_function_decls (void)
{
/* Don't instrument functions such as the synthetic constructor
built during mudflap_finish_file. */
if (mf_marked_p (current_function_decl) ||
DECL_ARTIFICIAL (current_function_decl))
return;
return 0;
push_gimplify_context ();
@ -955,6 +956,7 @@ execute_mudflap_function_decls (void)
DECL_ARGUMENTS (current_function_decl));
pop_gimplify_context (NULL);
return 0;
}
/* This struct is passed between mf_xform_decls to store state needed

View File

@ -101,7 +101,7 @@ finalize_nrv_r (tree *tp, int *walk_subtrees, void *data)
then we could either have the languages register the optimization or
we could change the gating function to check the current language. */
static void
static unsigned int
tree_nrv (void)
{
tree result = DECL_RESULT (current_function_decl);
@ -114,7 +114,7 @@ tree_nrv (void)
/* If this function does not return an aggregate type in memory, then
there is nothing to do. */
if (!aggregate_value_p (result, current_function_decl))
return;
return 0;
/* Look through each block for assignments to the RESULT_DECL. */
FOR_EACH_BB (bb)
@ -146,7 +146,7 @@ tree_nrv (void)
than previous return statements, then we can not perform
NRV optimizations. */
if (found != ret_expr)
return;
return 0;
}
else
found = ret_expr;
@ -161,13 +161,13 @@ tree_nrv (void)
|| DECL_ALIGN (found) > DECL_ALIGN (result)
|| !lang_hooks.types_compatible_p (TREE_TYPE (found),
result_type))
return;
return 0;
}
}
}
if (!found)
return;
return 0;
/* If dumping details, then note once and only the NRV replacement. */
if (dump_file && (dump_flags & TDF_DETAILS))
@ -211,6 +211,7 @@ tree_nrv (void)
/* FOUND is no longer used. Ensure it gets removed. */
var_ann (found)->used = 0;
return 0;
}
struct tree_opt_pass pass_nrv =
@ -242,7 +243,7 @@ struct tree_opt_pass pass_nrv =
escaped prior to the call. If it has, modifications to the local
variable will produce visible changes elsewhere, as in PR c++/19317. */
static void
static unsigned int
execute_return_slot_opt (void)
{
basic_block bb;
@ -287,6 +288,7 @@ execute_return_slot_opt (void)
}
}
}
return 0;
}
struct tree_opt_pass pass_return_slot =

View File

@ -50,7 +50,7 @@ static void expr_object_size (struct object_size_info *, tree, tree);
static bool merge_object_sizes (struct object_size_info *, tree, tree,
unsigned HOST_WIDE_INT);
static bool plus_expr_object_size (struct object_size_info *, tree, tree);
static void compute_object_sizes (void);
static unsigned int compute_object_sizes (void);
static void init_offset_limit (void);
static void check_for_plus_in_loops (struct object_size_info *, tree);
static void check_for_plus_in_loops_1 (struct object_size_info *, tree,
@ -982,7 +982,7 @@ fini_object_sizes (void)
/* Simple pass to optimize all __builtin_object_size () builtins. */
static void
static unsigned int
compute_object_sizes (void)
{
basic_block bb;
@ -1054,6 +1054,7 @@ compute_object_sizes (void)
}
fini_object_sizes ();
return 0;
}
struct tree_opt_pass pass_object_sizes =

View File

@ -100,10 +100,11 @@ struct tree_opt_pass pass_early_local_passes =
because after the tree optimizers have run such cleanups may
be necessary. */
static void
static unsigned int
execute_cleanup_cfg_pre_ipa (void)
{
cleanup_tree_cfg ();
return 0;
}
struct tree_opt_pass pass_cleanup_cfg =
@ -129,13 +130,14 @@ struct tree_opt_pass pass_cleanup_cfg =
because after the tree optimizers have run such cleanups may
be necessary. */
static void
static unsigned int
execute_cleanup_cfg_post_optimizing (void)
{
fold_cond_expr_cond ();
cleanup_tree_cfg ();
cleanup_dead_labels ();
group_case_labels ();
return 0;
}
struct tree_opt_pass pass_cleanup_cfg_post_optimizing =
@ -158,7 +160,7 @@ struct tree_opt_pass pass_cleanup_cfg_post_optimizing =
/* Pass: do the actions required to finish with tree-ssa optimization
passes. */
static void
static unsigned int
execute_free_datastructures (void)
{
/* ??? This isn't the right place for this. Worse, it got computed
@ -169,6 +171,7 @@ execute_free_datastructures (void)
/* Remove the ssa structures. Do it here since this includes statement
annotations that need to be intact during disband_implicit_edges. */
delete_tree_ssa ();
return 0;
}
struct tree_opt_pass pass_free_datastructures =
@ -189,7 +192,7 @@ struct tree_opt_pass pass_free_datastructures =
};
/* Pass: free cfg annotations. */
static void
static unsigned int
execute_free_cfg_annotations (void)
{
basic_block bb;
@ -215,6 +218,7 @@ execute_free_cfg_annotations (void)
the integrity of statements in the EH throw table. */
verify_eh_throw_table_statements ();
#endif
return 0;
}
struct tree_opt_pass pass_free_cfg_annotations =
@ -237,7 +241,7 @@ struct tree_opt_pass pass_free_cfg_annotations =
changed some properties - such as marked functions nothrow. Remove now
redundant edges and basic blocks. */
static void
static unsigned int
execute_fixup_cfg (void)
{
basic_block bb;
@ -260,6 +264,7 @@ execute_fixup_cfg (void)
}
cleanup_tree_cfg ();
return 0;
}
struct tree_opt_pass pass_fixup_cfg =
@ -282,11 +287,12 @@ struct tree_opt_pass pass_fixup_cfg =
/* Do the actions required to initialize internal data structures used
in tree-ssa optimization passes. */
static void
static unsigned int
execute_init_datastructures (void)
{
/* Allocate hash tables, arrays and other structures. */
init_tree_ssa ();
return 0;
}
struct tree_opt_pass pass_init_datastructures =

View File

@ -2505,7 +2505,7 @@ insert_backedge_copies (void)
R. Morgan, ``Building an Optimizing Compiler'',
Butterworth-Heinemann, Boston, MA, 1998. pp 176-186. */
static void
static unsigned int
rewrite_out_of_ssa (void)
{
var_map map;
@ -2548,6 +2548,7 @@ rewrite_out_of_ssa (void)
delete_var_map (map);
in_ssa_p = false;
return 0;
}

View File

@ -97,8 +97,9 @@ struct tree_opt_pass
bool (*gate) (void);
/* This is the code to run. If null, then there should be sub-passes
otherwise this pass does nothing. */
void (*execute) (void);
otherwise this pass does nothing. The return value contains
TODOs to execute in addition to those in TODO_flags_finish. */
unsigned int (*execute) (void);
/* A list of sub-passes to run, dependent on gate predicate. */
struct tree_opt_pass *sub;

View File

@ -234,7 +234,7 @@ do_tree_profiling (void)
return false;
}
static void
static unsigned int
tree_profiling (void)
{
branch_prob ();
@ -247,6 +247,7 @@ tree_profiling (void)
easy to adjust it, if and when there is some. */
free_dominance_info (CDI_DOMINATORS);
free_dominance_info (CDI_POST_DOMINATORS);
return 0;
}
struct tree_opt_pass pass_tree_profile =

View File

@ -2671,7 +2671,7 @@ expression_expensive_p (tree expr)
We only consider SSA names defined by phi nodes; rest is left to the
ordinary constant propagation pass. */
void
unsigned int
scev_const_prop (void)
{
basic_block bb;
@ -2681,7 +2681,7 @@ scev_const_prop (void)
unsigned i;
if (!current_loops)
return;
return 0;
FOR_EACH_BB (bb)
{
@ -2802,4 +2802,5 @@ scev_const_prop (void)
update_stmt (ass);
}
}
return 0;
}

View File

@ -32,7 +32,7 @@ extern tree analyze_scalar_evolution (struct loop *, tree);
extern tree instantiate_parameters (struct loop *, tree);
extern void gather_stats_on_scev_database (void);
extern void scev_analysis (void);
void scev_const_prop (void);
unsigned int scev_const_prop (void);
extern bool simple_iv (struct loop *, tree, tree, affine_iv *, bool);

View File

@ -2178,7 +2178,7 @@ sra_init_cache (void)
/* Main entry point. */
static void
static unsigned int
tree_sra (void)
{
/* Initialize local variables. */
@ -2204,6 +2204,7 @@ tree_sra (void)
BITMAP_FREE (sra_type_decomp_cache);
BITMAP_FREE (sra_type_inst_cache);
obstack_free (&sra_obstack, NULL);
return 0;
}
static bool

View File

@ -603,7 +603,7 @@ recalculate_used_alone (void)
max-aliased-vops}), alias sets are grouped to avoid severe
compile-time slow downs and memory consumption. See group_aliases. */
static void
static unsigned int
compute_may_aliases (void)
{
struct alias_info *ai;
@ -676,6 +676,7 @@ compute_may_aliases (void)
}
recalculate_used_alone ();
updating_used_alone = false;
return 0;
}
@ -3125,7 +3126,7 @@ find_used_portions (tree *tp, int *walk_subtrees, void *lhs_p)
/* Create structure field variables for structures used in this function. */
static void
static unsigned int
create_structure_vars (void)
{
basic_block bb;
@ -3158,7 +3159,7 @@ create_structure_vars (void)
}
htab_delete (used_portions);
VEC_free (tree, heap, varvec);
return 0;
}
static bool

View File

@ -1378,10 +1378,11 @@ execute_ssa_ccp (bool store_ccp)
}
static void
static unsigned int
do_ssa_ccp (void)
{
execute_ssa_ccp (false);
return 0;
}
@ -1412,11 +1413,12 @@ struct tree_opt_pass pass_ccp =
};
static void
static unsigned int
do_ssa_store_ccp (void)
{
/* If STORE-CCP is not enabled, we just run regular CCP. */
execute_ssa_ccp (flag_tree_store_ccp != 0);
return 0;
}
static bool
@ -2469,7 +2471,7 @@ convert_to_gimple_builtin (block_stmt_iterator *si_p, tree expr)
/* A simple pass that attempts to fold all builtin functions. This pass
is run after we've propagated as many constants as we can. */
static void
static unsigned int
execute_fold_all_builtins (void)
{
bool cfg_changed = false;
@ -2561,6 +2563,7 @@ execute_fold_all_builtins (void)
/* Delete unreachable blocks. */
if (cfg_changed)
cleanup_tree_cfg ();
return 0;
}

View File

@ -1042,10 +1042,11 @@ gate_copy_prop (void)
return flag_tree_copy_prop != 0;
}
static void
static unsigned int
do_copy_prop (void)
{
execute_copy_prop (false, false);
return 0;
}
struct tree_opt_pass pass_copy_prop =
@ -1070,10 +1071,11 @@ struct tree_opt_pass pass_copy_prop =
};
static void
static unsigned int
do_phi_only_copy_prop (void)
{
execute_copy_prop (false, true);
return 0;
}
struct tree_opt_pass pass_phi_only_copy_prop =
@ -1108,11 +1110,12 @@ gate_store_copy_prop (void)
return flag_tree_store_copy_prop != 0 || flag_tree_copy_prop != 0;
}
static void
static unsigned int
store_copy_prop (void)
{
/* If STORE-COPY-PROP is not enabled, we just run regular COPY-PROP. */
execute_copy_prop (flag_tree_store_copy_prop != 0, false);
return 0;
}
struct tree_opt_pass pass_store_copy_prop =

View File

@ -292,7 +292,7 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
then cause the SSA->normal pass to attempt to coalesce them all to the same
variable. */
static void
static unsigned int
rename_ssa_copies (void)
{
var_map map;
@ -374,6 +374,7 @@ rename_ssa_copies (void)
}
delete_var_map (map);
return 0;
}
/* Return true if copy rename is to be performed. */

View File

@ -926,24 +926,27 @@ perform_tree_ssa_dce (bool aggressive)
}
/* Pass entry points. */
static void
static unsigned int
tree_ssa_dce (void)
{
perform_tree_ssa_dce (/*aggressive=*/false);
return 0;
}
static void
static unsigned int
tree_ssa_dce_loop (void)
{
perform_tree_ssa_dce (/*aggressive=*/false);
free_numbers_of_iterations_estimates (current_loops);
scev_reset ();
return 0;
}
static void
static unsigned int
tree_ssa_cd_dce (void)
{
perform_tree_ssa_dce (/*aggressive=*/optimize >= 2);
return 0;
}
static bool

View File

@ -235,7 +235,7 @@ free_all_edge_infos (void)
every new symbol exposed, its corresponding bit will be set in
VARS_TO_RENAME. */
static void
static unsigned int
tree_ssa_dominator_optimize (void)
{
struct dom_walk_data walk_data;
@ -358,6 +358,7 @@ tree_ssa_dominator_optimize (void)
VEC_free (tree, heap, avail_exprs_stack);
VEC_free (tree, heap, const_and_copies_stack);
VEC_free (tree, heap, stmts_to_rescan);
return 0;
}
static bool

View File

@ -91,7 +91,7 @@ struct address_walk_data
};
static bool gate_dse (void);
static void tree_ssa_dse (void);
static unsigned int tree_ssa_dse (void);
static void dse_initialize_block_local_data (struct dom_walk_data *,
basic_block,
bool);
@ -398,7 +398,7 @@ dse_finalize_block (struct dom_walk_data *walk_data,
}
}
static void
static unsigned int
tree_ssa_dse (void)
{
struct dom_walk_data walk_data;
@ -455,6 +455,7 @@ tree_ssa_dse (void)
/* For now, just wipe the post-dominator information. */
free_dominance_info (CDI_POST_DOMINATORS);
return 0;
}
static bool

View File

@ -927,7 +927,7 @@ simplify_switch_expr (tree stmt)
/* Main entry point for the forward propagation optimizer. */
static void
static unsigned int
tree_ssa_forward_propagate_single_use_vars (void)
{
basic_block bb;
@ -991,6 +991,7 @@ tree_ssa_forward_propagate_single_use_vars (void)
if (cfg_changed)
cleanup_tree_cfg ();
return 0;
}

View File

@ -120,7 +120,7 @@ do_while_loop_p (struct loop *loop)
of the loop. This is beneficial since it increases efficiency of
code motion optimizations. It also saves one jump on entry to the loop. */
static void
static unsigned int
copy_loop_headers (void)
{
struct loops *loops;
@ -135,7 +135,7 @@ copy_loop_headers (void)
loops = loop_optimizer_init (LOOPS_HAVE_PREHEADERS
| LOOPS_HAVE_SIMPLE_LATCHES);
if (!loops)
return;
return 0;
#ifdef ENABLE_CHECKING
verify_loop_structure (loops);
@ -214,6 +214,7 @@ copy_loop_headers (void)
free (copied_bbs);
loop_optimizer_finalize (loops);
return 0;
}
static bool

View File

@ -87,14 +87,15 @@ struct tree_opt_pass pass_tree_loop =
/* Loop optimizer initialization. */
static void
static unsigned int
tree_ssa_loop_init (void)
{
current_loops = tree_loop_optimizer_init ();
if (!current_loops)
return;
return 0;
scev_initialize (current_loops);
return 0;
}
struct tree_opt_pass pass_tree_loop_init =
@ -116,13 +117,14 @@ struct tree_opt_pass pass_tree_loop_init =
/* Loop invariant motion pass. */
static void
static unsigned int
tree_ssa_loop_im (void)
{
if (!current_loops)
return;
return 0;
tree_ssa_lim (current_loops);
return 0;
}
static bool
@ -150,13 +152,14 @@ struct tree_opt_pass pass_lim =
/* Loop unswitching pass. */
static void
static unsigned int
tree_ssa_loop_unswitch (void)
{
if (!current_loops)
return;
return 0;
tree_ssa_unswitch_loops (current_loops);
return 0;
}
static bool
@ -184,10 +187,11 @@ struct tree_opt_pass pass_tree_unswitch =
/* Loop autovectorization. */
static void
static unsigned int
tree_vectorize (void)
{
vectorize_loops (current_loops);
return 0;
}
static bool
@ -215,13 +219,14 @@ struct tree_opt_pass pass_vectorize =
/* Loop nest optimizations. */
static void
static unsigned int
tree_linear_transform (void)
{
if (!current_loops)
return;
return 0;
linear_transform_loops (current_loops);
return 0;
}
static bool
@ -249,13 +254,14 @@ struct tree_opt_pass pass_linear_transform =
/* Canonical induction variable creation pass. */
static void
static unsigned int
tree_ssa_loop_ivcanon (void)
{
if (!current_loops)
return;
return 0;
canonicalize_induction_variables (current_loops);
return 0;
}
static bool
@ -310,13 +316,14 @@ struct tree_opt_pass pass_scev_cprop =
/* Remove empty loops. */
static void
static unsigned int
tree_ssa_empty_loop (void)
{
if (!current_loops)
return;
return 0;
remove_empty_loops (current_loops);
return 0;
}
struct tree_opt_pass pass_empty_loop =
@ -338,14 +345,15 @@ struct tree_opt_pass pass_empty_loop =
/* Record bounds on numbers of iterations of loops. */
static void
static unsigned int
tree_ssa_loop_bounds (void)
{
if (!current_loops)
return;
return 0;
estimate_numbers_of_iterations (current_loops);
scev_reset ();
return 0;
}
struct tree_opt_pass pass_record_bounds =
@ -367,16 +375,17 @@ struct tree_opt_pass pass_record_bounds =
/* Complete unrolling of loops. */
static void
static unsigned int
tree_complete_unroll (void)
{
if (!current_loops)
return;
return 0;
tree_unroll_loops_completely (current_loops,
flag_unroll_loops
|| flag_peel_loops
|| optimize >= 3);
return 0;
}
static bool
@ -404,13 +413,14 @@ struct tree_opt_pass pass_complete_unroll =
/* Prefetching. */
static void
static unsigned int
tree_ssa_loop_prefetch (void)
{
if (!current_loops)
return;
return 0;
tree_ssa_prefetch_arrays (current_loops);
return 0;
}
static bool
@ -438,13 +448,14 @@ struct tree_opt_pass pass_loop_prefetch =
/* Induction variable optimizations. */
static void
static unsigned int
tree_ssa_loop_ivopts (void)
{
if (!current_loops)
return;
return 0;
tree_ssa_iv_optimize (current_loops);
return 0;
}
static bool
@ -474,16 +485,17 @@ struct tree_opt_pass pass_iv_optimize =
/* Loop optimizer finalization. */
static void
static unsigned int
tree_ssa_loop_done (void)
{
if (!current_loops)
return;
return 0;
free_numbers_of_iterations_estimates (current_loops);
scev_finalize ();
loop_optimizer_finalize (current_loops);
current_loops = NULL;
return 0;
}
struct tree_opt_pass pass_tree_loop_done =

View File

@ -447,7 +447,7 @@ gate_cse_reciprocals (void)
/* Go through all the floating-point SSA_NAMEs, and call
execute_cse_reciprocals_1 on each of them. */
static void
static unsigned int
execute_cse_reciprocals (void)
{
basic_block bb;
@ -496,6 +496,7 @@ execute_cse_reciprocals (void)
free_dominance_info (CDI_DOMINATORS | CDI_POST_DOMINATORS);
free_alloc_pool (occ_pool);
return 0;
}
struct tree_opt_pass pass_cse_reciprocals =

View File

@ -35,7 +35,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#include "tree-dump.h"
#include "langhooks.h"
static void tree_ssa_phiopt (void);
static unsigned int tree_ssa_phiopt (void);
static bool conditional_replacement (basic_block, basic_block,
edge, edge, tree, tree, tree);
static bool value_replacement (basic_block, basic_block,
@ -133,7 +133,7 @@ static basic_block *blocks_in_phiopt_order (void);
A similar transformation is done for MAX_EXPR. */
static void
static unsigned int
tree_ssa_phiopt (void)
{
basic_block bb;
@ -237,6 +237,7 @@ tree_ssa_phiopt (void)
}
free (bb_order);
return 0;
}
/* Returns the list of basic blocks in the function in an order that guarantees

View File

@ -3803,10 +3803,11 @@ execute_pre (bool do_fre)
/* Gate and execute functions for PRE. */
static void
static unsigned int
do_pre (void)
{
execute_pre (false);
return 0;
}
static bool
@ -3837,10 +3838,11 @@ struct tree_opt_pass pass_pre =
/* Gate and execute functions for FRE. */
static void
static unsigned int
execute_fre (void)
{
execute_pre (true);
return 0;
}
static bool

View File

@ -1489,7 +1489,7 @@ fini_reassoc (void)
/* Gate and execute functions for Reassociation. */
static void
static unsigned int
execute_reassoc (void)
{
init_reassoc ();
@ -1498,6 +1498,7 @@ execute_reassoc (void)
repropagate_negates ();
fini_reassoc ();
return 0;
}
struct tree_opt_pass pass_reassoc =

View File

@ -537,10 +537,11 @@ execute_sink_code (void)
/* Gate and execute functions for PRE. */
static void
static unsigned int
do_sink (void)
{
execute_sink_code ();
return 0;
}
static bool

View File

@ -4552,7 +4552,7 @@ gate_ipa_pta (void)
}
/* Execute the driver for IPA PTA. */
static void
static unsigned int
ipa_pta_execute (void)
{
struct cgraph_node *node;
@ -4647,6 +4647,7 @@ ipa_pta_execute (void)
in_ipa_mode = 0;
delete_alias_heapvars ();
delete_points_to_sets ();
return 0;
}
struct tree_opt_pass pass_ipa_pta =

View File

@ -382,7 +382,7 @@ record_equiv (tree value, tree equivalence)
/* Main driver for un-cprop. */
static void
static unsigned int
tree_ssa_uncprop (void)
{
struct dom_walk_data walk_data;
@ -441,7 +441,7 @@ tree_ssa_uncprop (void)
}
}
}
return 0;
}

View File

@ -1196,7 +1196,7 @@ warn_uninitialized_phi (tree phi)
}
}
static void
static unsigned int
execute_early_warn_uninitialized (void)
{
block_stmt_iterator bsi;
@ -1209,9 +1209,10 @@ execute_early_warn_uninitialized (void)
walk_tree (bsi_stmt_ptr (bsi), warn_uninitialized_var,
context, NULL);
}
return 0;
}
static void
static unsigned int
execute_late_warn_uninitialized (void)
{
basic_block bb;
@ -1225,6 +1226,7 @@ execute_late_warn_uninitialized (void)
FOR_EACH_BB (bb)
for (phi = phi_nodes (bb); phi; phi = PHI_CHAIN (phi))
warn_uninitialized_phi (phi);
return 0;
}
static bool

View File

@ -603,7 +603,7 @@ gate_optimize_stdarg (void)
/* Entry point to the stdarg optimization pass. */
static void
static unsigned int
execute_optimize_stdarg (void)
{
basic_block bb;
@ -903,6 +903,7 @@ finish:
fprintf (dump_file, "%d", cfun->va_list_fpr_size);
fputs (" FPR units.\n", dump_file);
}
return 0;
}

View File

@ -994,10 +994,11 @@ tree_optimize_tail_calls_1 (bool opt_tailcalls)
add_virtual_phis ();
}
static void
static unsigned int
execute_tail_recursion (void)
{
tree_optimize_tail_calls_1 (false);
return 0;
}
static bool
@ -1006,10 +1007,11 @@ gate_tail_calls (void)
return flag_optimize_sibling_calls != 0;
}
static void
static unsigned int
execute_tail_calls (void)
{
tree_optimize_tail_calls_1 (true);
return 0;
}
struct tree_opt_pass pass_tail_recursion =

View File

@ -469,7 +469,7 @@ gate_expand_vector_operations (void)
return flag_tree_vectorize != 0;
}
static void
static unsigned int
expand_vector_operations (void)
{
block_stmt_iterator bsi;
@ -483,6 +483,7 @@ expand_vector_operations (void)
update_stmt_if_modified (bsi_stmt (bsi));
}
}
return 0;
}
struct tree_opt_pass pass_lower_vector =

View File

@ -4518,7 +4518,7 @@ vrp_finalize (void)
DON'T KNOW. In the future, it may be worthwhile to propagate
probabilities to aid branch prediction. */
static void
static unsigned int
execute_vrp (void)
{
insert_range_assertions ();
@ -4551,7 +4551,7 @@ execute_vrp (void)
update_ssa (TODO_update_ssa);
finalize_jump_threads ();
return 0;
}
static bool

View File

@ -4284,7 +4284,7 @@ extern tree find_compatible_field (tree, tree);
extern void expand_main_function (void);
extern void init_dummy_function_start (void);
extern void expand_dummy_function_end (void);
extern void init_function_for_compilation (void);
extern unsigned int init_function_for_compilation (void);
extern void allocate_struct_function (tree);
extern void init_function_start (tree);
extern bool use_register_for_decl (tree);

View File

@ -2676,11 +2676,11 @@ vt_finalize (void)
/* The entry point to variable tracking pass. */
void
unsigned int
variable_tracking_main (void)
{
if (n_basic_blocks > 500 && n_edges / n_basic_blocks >= 20)
return;
return 0;
mark_dfs_back_edges ();
vt_initialize ();
@ -2689,7 +2689,7 @@ variable_tracking_main (void)
if (!vt_stack_adjustments ())
{
vt_finalize ();
return;
return 0;
}
}
@ -2703,6 +2703,7 @@ variable_tracking_main (void)
}
vt_finalize ();
return 0;
}
static bool

View File

@ -285,13 +285,14 @@ gate_handle_web (void)
return (optimize > 0 && flag_web);
}
static void
static unsigned int
rest_of_handle_web (void)
{
web_main ();
delete_trivially_dead_insns (get_insns (), max_reg_num ());
cleanup_cfg (CLEANUP_EXPENSIVE);
reg_scan (get_insns (), max_reg_num ());
return 0;
}
struct tree_opt_pass pass_web =