diff options
93 files changed, 520 insertions, 209 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 066b933eb7b..7967d68fd04 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/alias.c b/gcc/alias.c index 5e152855a81..d66d0c7e586 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -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 = diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 2a2e8de30dc..e8e08a011be 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -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); diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 640907081e7..412f78a24da 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -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 = diff --git a/gcc/bt-load.c b/gcc/bt-load.c index a0a89bc2fbf..853155526f7 100644 --- a/gcc/bt-load.c +++ b/gcc/bt-load.c @@ -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 = diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 0e67415e81c..2dd4ff2bbcf 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -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; } diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index c0bf209d9d8..65ebdb71fcc 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -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 = diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c index 265afd73f93..bcdeb96c130 100644 --- a/gcc/cfglayout.c +++ b/gcc/cfglayout.c @@ -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 = diff --git a/gcc/cfglayout.h b/gcc/cfglayout.h index 52bd4e9ee14..4bc1e6759c8 100644 --- a/gcc/cfglayout.h +++ b/gcc/cfglayout.h @@ -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 *, diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index d6a576d3495..f8de04bb058 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -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 = diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index f0081b68da4..f6540c02b02 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -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 = diff --git a/gcc/combine.c b/gcc/combine.c index 32d3f67df4f..b7199addbd4 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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 = diff --git a/gcc/cse.c b/gcc/cse.c index 7d6f46b0a35..681e9416021 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -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; } diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 7dfdd3a0163..06721c6c467 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -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 = diff --git a/gcc/except.c b/gcc/except.c index fba9918b1bb..90a75adeb7d 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -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 = diff --git a/gcc/except.h b/gcc/except.h index 2b2115a09da..46914d4205c 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -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); diff --git a/gcc/final.c b/gcc/final.c index c145045b133..04596646b3e 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -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 = diff --git a/gcc/flow.c b/gcc/flow.c index 2e78674cf3e..ff03ca6fc2a 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -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 = diff --git a/gcc/function.c b/gcc/function.c index 00a673ac4bd..9283b50d841 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -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 = diff --git a/gcc/gcse.c b/gcc/gcse.c index 42707373779..a3ec8c0cbed 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -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 = diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c index 69f9894a747..6de2b8f1855 100644 --- a/gcc/gimple-low.c +++ b/gcc/gimple-low.c @@ -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; } diff --git a/gcc/global.c b/gcc/global.c index 4cead231eec..0642a708d04 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -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 = diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 5d156a6caeb..23a9b3c7c36 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -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; } diff --git a/gcc/integrate.c b/gcc/integrate.c index 9ac14a0d709..98769354ddf 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -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 = diff --git a/gcc/integrate.h b/gcc/integrate.h index 7987627e1dc..2c9009811d3 100644 --- a/gcc/integrate.h +++ b/gcc/integrate.h @@ -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 diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 23e8de80a2e..898d95e8212 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -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. */ diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 2cb6b4207f2..9ba2f109b3c 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -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. */ diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 82d0ca55711..b5c5f2deaa0 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -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 */ diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index 1026d9b3130..079af5e12e2 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -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 diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c index fe2f807d3e8..077aa18d723 100644 --- a/gcc/ipa-reference.c +++ b/gcc/ipa-reference.c @@ -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; } diff --git a/gcc/ipa-type-escape.c b/gcc/ipa-type-escape.c index 37a61e43cb4..b2ee148268e 100644 --- a/gcc/ipa-type-escape.c +++ b/gcc/ipa-type-escape.c @@ -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 diff --git a/gcc/jump.c b/gcc/jump.c index 05780b22c7f..38d1146ff22 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -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 = diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 820e0b654bf..f751c0fc31f 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -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 = diff --git a/gcc/loop-init.c b/gcc/loop-init.c index bf13fd0948d..d2c63404516 100644 --- a/gcc/loop-init.c +++ b/gcc/loop-init.c @@ -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 = diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c index 26acab20f90..0d485dd0a1e 100644 --- a/gcc/mode-switching.c +++ b/gcc/mode-switching.c @@ -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; } diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index fdba7300da7..ee1a23641b5 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -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 = diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 38d4224f4bf..74be1e8e8cc 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -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 diff --git a/gcc/passes.c b/gcc/passes.c index 0babab79bb8..c3702ef46de 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -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) diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c index faa4a4bfc17..76b7b8c9ae0 100644 --- a/gcc/postreload-gcse.c +++ b/gcc/postreload-gcse.c @@ -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 = diff --git a/gcc/postreload.c b/gcc/postreload.c index fe2c7c832cd..5f4ae4f5b18 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -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 = diff --git a/gcc/predict.c b/gcc/predict.c index 8555982e072..c59e57b0c5e 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -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 diff --git a/gcc/profile.c b/gcc/profile.c index d3bce07b8e9..7fa9aad03ef 100644 --- a/gcc/profile.c +++ b/gcc/profile.c @@ -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 = diff --git a/gcc/recog.c b/gcc/recog.c index e3cdfd79914..fde429ccf9c 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -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 = diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index eb7a3c12751..73c132fda22 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -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 = diff --git a/gcc/regmove.c b/gcc/regmove.c index 1502c0858df..31f1851a362 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -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 = diff --git a/gcc/regrename.c b/gcc/regrename.c index 8d2a286ccb7..49e18c4a7c2 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -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 = diff --git a/gcc/reorg.c b/gcc/reorg.c index 3376c00a63f..7781d27606c 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -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 = diff --git a/gcc/rtl-factoring.c b/gcc/rtl-factoring.c index 864836e07b9..0cd1aaa4dbb 100644 --- a/gcc/rtl-factoring.c +++ b/gcc/rtl-factoring.c @@ -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 = { diff --git a/gcc/rtl.h b/gcc/rtl.h index 9c088e92598..4ee188cadce 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -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, diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 3109786576f..62392403eb0 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -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 = diff --git a/gcc/tracer.c b/gcc/tracer.c index fc4aed7c9c7..c7bd2bd1d6c 100644 --- a/gcc/tracer.c +++ b/gcc/tracer.c @@ -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 = diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 60dacbd5fc8..1c689e2037c 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -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 = diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index dc0380aefc2..57315d4c980 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -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 diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index d37a82e701c..0529131301a 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -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 diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 9c2ddcfaf1f..27f51de271d 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -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 = diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index 85379e63d8b..202073d3534 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -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 = diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 557dffbc423..2a6102026ef 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -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 diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 09a73b2b53c..e0b6e6e16d2 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -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; } diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c index 7384be0a6b7..5a1444d1dba 100644 --- a/gcc/tree-mudflap.c +++ b/gcc/tree-mudflap.c @@ -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 diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c index 761e6a0ab46..54b964f2583 100644 --- a/gcc/tree-nrv.c +++ b/gcc/tree-nrv.c @@ -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 = diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index fd7e427ff7d..068bacf4645 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -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 = diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index 34f2d463077..fdf8ca1c46b 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -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 = diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c index 558cedd22fc..f2841ae00e8 100644 --- a/gcc/tree-outof-ssa.c +++ b/gcc/tree-outof-ssa.c @@ -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; } diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 0a1a3543866..a7c3f006224 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -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; diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c index 157c600927e..fe42309ccc7 100644 --- a/gcc/tree-profile.c +++ b/gcc/tree-profile.c @@ -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 = diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index 462d78fb39e..998b6aa459f 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -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; } diff --git a/gcc/tree-scalar-evolution.h b/gcc/tree-scalar-evolution.h index f7749545f9a..4f947a852f5 100644 --- a/gcc/tree-scalar-evolution.h +++ b/gcc/tree-scalar-evolution.h @@ -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); diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index a1828e8cda6..0b594b945e2 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -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 diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index eacfed70891..8f8fbfa04b9 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -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 diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 6b724a1f25c..ae441fa3cc4 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -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; } diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c index c716d118029..e0e2a4faf1f 100644 --- a/gcc/tree-ssa-copy.c +++ b/gcc/tree-ssa-copy.c @@ -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 = diff --git a/gcc/tree-ssa-copyrename.c b/gcc/tree-ssa-copyrename.c index 7861a76fb9c..45f65678e1a 100644 --- a/gcc/tree-ssa-copyrename.c +++ b/gcc/tree-ssa-copyrename.c @@ -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. */ diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index c8a30a4024f..15c2ee417ff 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -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 diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index e003b650c2f..5a28e7830e2 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -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 diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c index 9bfce5a3599..17ed1297aff 100644 --- a/gcc/tree-ssa-dse.c +++ b/gcc/tree-ssa-dse.c @@ -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 diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index 1fd90088d63..d91ab45b331 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -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; } diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c index 1ce95bd9167..1663807127a 100644 --- a/gcc/tree-ssa-loop-ch.c +++ b/gcc/tree-ssa-loop-ch.c @@ -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 diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c index 8657dac1882..ee1b9b374ea 100644 --- a/gcc/tree-ssa-loop.c +++ b/gcc/tree-ssa-loop.c @@ -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 = diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 825c0bdec61..609c408ed8c 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -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 = diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index 2b772db6873..ff96065eb41 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -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 diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 95df3887895..305ee3e938b 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -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 diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index c36293f6937..4d298fe9495 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -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 = diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c index 7e4e14291ac..4db67c524ce 100644 --- a/gcc/tree-ssa-sink.c +++ b/gcc/tree-ssa-sink.c @@ -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 diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 79d4f90b1af..a84a32c581b 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -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 = diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c index c79b120ce3d..2271613c3eb 100644 --- a/gcc/tree-ssa-uncprop.c +++ b/gcc/tree-ssa-uncprop.c @@ -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; } diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 6e40e129d7f..2dab5c6835d 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -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 diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index b49526d1848..4a67bc850f6 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -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; } diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c index b0f74ffbc70..bdc5c95de88 100644 --- a/gcc/tree-tailcall.c +++ b/gcc/tree-tailcall.c @@ -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 = diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index dd58cb914e8..b1e567aa870 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -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 = diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 099e85aae06..d8ff9fd3710 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -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 diff --git a/gcc/tree.h b/gcc/tree.h index 6b26a85a5c6..be7f5d85895 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -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); diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c index 2d73deff45c..7e910d6bcba 100644 --- a/gcc/var-tracking.c +++ b/gcc/var-tracking.c @@ -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 diff --git a/gcc/web.c b/gcc/web.c index 164fd17223c..b729be7b9ee 100644 --- a/gcc/web.c +++ b/gcc/web.c @@ -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 = |