diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e8246dfff4c..1289a219a15 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,31 @@ +2005-08-09 Paolo Bonzini + + * bb-reorder.c (pass_duplicate_computed_gotos, pass_partition_blocks): + Add dump. + * cfglayout.c (pass_insn_locators_initialize): Add dump. + * emit-rtl.c (pass_unshare_all_rtl, pass_remove_unnecessary_notes): + Add dump. + * except.c (pass_convert_to_eh_region_ranges): Add dump. + * final.c (pass_shorten_branches): Add dump. + * flow.c (pass_recompute_reg_usage, pass_remove_death_notes): Add dump. + (pass_life): Rename dump. + (rest_of_handle_flow2): Remove initial verify_flow_info. + * function.c (pass_instantiate_virtual_regs): Add dump. + * integrate.c (pass_initial_value_sets): Add dump. + * jump.c (pass_cleanup_barriers, pass_purge_lineno_notes): Add dump. + * loop-init.c (pass_rtl_loop_init, pass_rtl_loop_done): Rename dump. + (pass_rtl_move_loop_invariants, pass_rtl_unswitch, pass_rtl_doloop, + pass_rtl_unroll_and_peel_loops): Rename dump and add gate. + (gate_rtl_move_loop_invariants, gate_rtl_unswitch, gate_rtl_doloop, + gate_rtl_unrool_and_peel_loops): New. + (rtl_move_loop_invariants, rtl_unswitch, rtl_unrool_and_peel_loops, + rtl_doloop): Do not look at flags. + * mode-switching.c (pass_mode_switching): Add dump. + * recog.c (pass_split_all_insns, pass_split_for_shorten_branches, + pass_split_before_regstack): Add dump. + * regmove.c (pass_stack_adjustments): Add dump. + * tree-optimize.c (pass_fixup_cfg): Add dump. + 2005-08-10 Kazuhiro Inaoka PR 23309 diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 76faedaaee3..2dca3e373e8 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -2086,7 +2086,7 @@ done: struct tree_opt_pass pass_duplicate_computed_gotos = { - NULL, /* name */ + "compgotos", /* name */ gate_duplicate_computed_gotos, /* gate */ duplicate_computed_gotos, /* execute */ NULL, /* sub */ @@ -2097,7 +2097,7 @@ struct tree_opt_pass pass_duplicate_computed_gotos = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; @@ -2276,7 +2276,7 @@ rest_of_handle_partition_blocks (void) struct tree_opt_pass pass_partition_blocks = { - NULL, /* name */ + "bbpart", /* name */ gate_handle_partition_blocks, /* gate */ rest_of_handle_partition_blocks, /* execute */ NULL, /* sub */ @@ -2287,7 +2287,7 @@ struct tree_opt_pass pass_partition_blocks = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c index 2a8a1221ac9..c63c6f7a4cf 100644 --- a/gcc/cfglayout.c +++ b/gcc/cfglayout.c @@ -333,7 +333,7 @@ insn_locators_initialize (void) struct tree_opt_pass pass_insn_locators_initialize = { - NULL, /* name */ + "locators", /* name */ NULL, /* gate */ insn_locators_initialize, /* execute */ NULL, /* sub */ @@ -344,7 +344,7 @@ struct tree_opt_pass pass_insn_locators_initialize = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 01a224f3b32..18c71b14890 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -2139,7 +2139,7 @@ unshare_all_rtl (void) struct tree_opt_pass pass_unshare_all_rtl = { - NULL, /* name */ + "unshare", /* name */ NULL, /* gate */ unshare_all_rtl, /* execute */ NULL, /* sub */ @@ -2150,7 +2150,7 @@ struct tree_opt_pass pass_unshare_all_rtl = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; @@ -3727,7 +3727,7 @@ remove_unnecessary_notes (void) struct tree_opt_pass pass_remove_unnecessary_notes = { - NULL, /* name */ + "eunotes", /* name */ NULL, /* gate */ remove_unnecessary_notes, /* execute */ NULL, /* sub */ @@ -3738,7 +3738,7 @@ struct tree_opt_pass pass_remove_unnecessary_notes = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/except.c b/gcc/except.c index 4578ae903d8..df91a1b2b18 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -3241,7 +3241,7 @@ convert_to_eh_region_ranges (void) struct tree_opt_pass pass_convert_to_eh_region_ranges = { - NULL, /* name */ + "eh-ranges", /* name */ NULL, /* gate */ convert_to_eh_region_ranges, /* execute */ NULL, /* sub */ @@ -3252,7 +3252,7 @@ struct tree_opt_pass pass_convert_to_eh_region_ranges = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/final.c b/gcc/final.c index e3b62a1553e..e1a4c189cf6 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -3974,7 +3974,7 @@ rest_of_handle_shorten_branches (void) struct tree_opt_pass pass_shorten_branches = { - NULL, /* name */ + "shorten", /* name */ NULL, /* gate */ rest_of_handle_shorten_branches, /* execute */ NULL, /* sub */ @@ -3985,7 +3985,7 @@ struct tree_opt_pass pass_shorten_branches = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/flow.c b/gcc/flow.c index 2ebcdda0073..79b26d698f0 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -4356,11 +4356,14 @@ recompute_reg_usage (void) in sched1 to die. To solve this update the DEATH_NOTES here. */ update_life_info (NULL, UPDATE_LIFE_LOCAL, PROP_REG_INFO | PROP_DEATH_NOTES); + + if (dump_file) + dump_flow_info (dump_file); } struct tree_opt_pass pass_recompute_reg_usage = { - NULL, /* name */ + "life2", /* name */ NULL, /* gate */ recompute_reg_usage, /* execute */ NULL, /* sub */ @@ -4371,8 +4374,8 @@ struct tree_opt_pass pass_recompute_reg_usage = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ - 0 /* letter */ + TODO_dump_func, /* todo_flags_finish */ + 'f' /* letter */ }; /* Optionally removes all the REG_DEAD and REG_UNUSED notes from a set of @@ -4538,7 +4541,7 @@ rest_of_handle_remove_death_notes (void) struct tree_opt_pass pass_remove_death_notes = { - NULL, /* name */ + "ednotes", /* name */ gate_remove_death_notes, /* gate */ rest_of_handle_remove_death_notes, /* execute */ NULL, /* sub */ @@ -4587,7 +4590,7 @@ rest_of_handle_life (void) struct tree_opt_pass pass_life = { - "life", /* name */ + "life1", /* name */ NULL, /* gate */ rest_of_handle_life, /* execute */ NULL, /* sub */ @@ -4606,11 +4609,6 @@ struct tree_opt_pass pass_life = static void rest_of_handle_flow2 (void) { - /* Re-create the death notes which were deleted during reload. */ -#ifdef ENABLE_CHECKING - verify_flow_info (); -#endif - /* If optimizing, then go ahead and split insns now. */ #ifndef STACK_REGS if (optimize > 0) diff --git a/gcc/function.c b/gcc/function.c index 35840991d92..fab19ae2ee7 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -1665,7 +1665,7 @@ instantiate_virtual_regs (void) struct tree_opt_pass pass_instantiate_virtual_regs = { - NULL, /* name */ + "vregs", /* name */ NULL, /* gate */ instantiate_virtual_regs, /* execute */ NULL, /* sub */ @@ -1676,7 +1676,7 @@ struct tree_opt_pass pass_instantiate_virtual_regs = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/integrate.c b/gcc/integrate.c index ee9c1849855..9ac14a0d709 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -299,7 +299,7 @@ emit_initial_value_sets (void) struct tree_opt_pass pass_initial_value_sets = { - NULL, /* name */ + "initvals", /* name */ NULL, /* gate */ emit_initial_value_sets, /* execute */ NULL, /* sub */ @@ -310,7 +310,7 @@ struct tree_opt_pass pass_initial_value_sets = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/jump.c b/gcc/jump.c index c278319b4d2..05780b22c7f 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -124,7 +124,7 @@ cleanup_barriers (void) struct tree_opt_pass pass_cleanup_barriers = { - NULL, /* name */ + "barriers", /* name */ NULL, /* gate */ cleanup_barriers, /* execute */ NULL, /* sub */ @@ -135,7 +135,7 @@ struct tree_opt_pass pass_cleanup_barriers = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; @@ -179,7 +179,7 @@ purge_line_number_notes (void) struct tree_opt_pass pass_purge_lineno_notes = { - NULL, /* name */ + "elnotes", /* name */ NULL, /* gate */ purge_line_number_notes, /* execute */ NULL, /* sub */ @@ -190,7 +190,7 @@ struct tree_opt_pass pass_purge_lineno_notes = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/loop-init.c b/gcc/loop-init.c index 0e0b0cf4c88..517474a545b 100644 --- a/gcc/loop-init.c +++ b/gcc/loop-init.c @@ -171,7 +171,7 @@ rtl_loop_init (void) struct tree_opt_pass pass_rtl_loop_init = { - "loopinit", /* name */ + "loop2_init", /* name */ NULL, /* gate */ rtl_loop_init, /* execute */ NULL, /* sub */ @@ -215,7 +215,7 @@ rtl_loop_done (void) struct tree_opt_pass pass_rtl_loop_done = { - "loopdone", /* name */ + "loop2_done", /* name */ NULL, /* gate */ rtl_loop_done, /* execute */ NULL, /* sub */ @@ -232,17 +232,23 @@ struct tree_opt_pass pass_rtl_loop_done = /* Loop invariant code motion. */ +static bool +gate_rtl_move_loop_invariants (void) +{ + return flag_move_loop_invariants; +} + static void rtl_move_loop_invariants (void) { - if (current_loops && flag_move_loop_invariants) + if (current_loops) move_loop_invariants (current_loops); } struct tree_opt_pass pass_rtl_move_loop_invariants = { - "loop_invariant", /* name */ - NULL, /* gate */ + "loop2_invariant", /* name */ + gate_rtl_move_loop_invariants, /* gate */ rtl_move_loop_invariants, /* execute */ NULL, /* sub */ NULL, /* next */ @@ -258,17 +264,23 @@ struct tree_opt_pass pass_rtl_move_loop_invariants = /* Loop unswitching for RTL. */ +static bool +gate_rtl_unswitch (void) +{ + return flag_unswitch_loops; +} + static void rtl_unswitch (void) { - if (current_loops && flag_unswitch_loops) + if (current_loops) unswitch_loops (current_loops); } struct tree_opt_pass pass_rtl_unswitch = { - "loop_unswitch", /* name */ - NULL, /* gate */ + "loop2_unswitch", /* name */ + gate_rtl_unswitch, /* gate */ rtl_unswitch, /* execute */ NULL, /* sub */ NULL, /* next */ @@ -284,11 +296,16 @@ struct tree_opt_pass pass_rtl_unswitch = /* Loop unswitching for RTL. */ +static bool +gate_rtl_unroll_and_peel_loops (void) +{ + return (flag_peel_loops || flag_unroll_loops || flag_unroll_all_loops); +} + static void rtl_unroll_and_peel_loops (void) { - if (current_loops - && (flag_peel_loops || flag_unroll_loops || flag_unroll_all_loops)) + if (current_loops) { int flags = 0; @@ -305,8 +322,8 @@ rtl_unroll_and_peel_loops (void) struct tree_opt_pass pass_rtl_unroll_and_peel_loops = { - "loop_unroll", /* name */ - NULL, /* gate */ + "loop2_unroll", /* name */ + gate_rtl_unroll_and_peel_loops, /* gate */ rtl_unroll_and_peel_loops, /* execute */ NULL, /* sub */ NULL, /* next */ @@ -322,20 +339,29 @@ struct tree_opt_pass pass_rtl_unroll_and_peel_loops = /* The doloop optimization. */ +static bool +gate_rtl_doloop (void) +{ +#ifdef HAVE_doloop_end + return (flag_branch_on_count_reg && HAVE_doloop_end); +#else + return 0; +#endif +} + static void rtl_doloop (void) { #ifdef HAVE_doloop_end - if (current_loops - && (flag_branch_on_count_reg && HAVE_doloop_end)) + if (current_loops) doloop_optimize_loops (current_loops); #endif } struct tree_opt_pass pass_rtl_doloop = { - "loop_doloop", /* name */ - NULL, /* gate */ + "loop2_doloop", /* name */ + gate_rtl_doloop, /* gate */ rtl_doloop, /* execute */ NULL, /* sub */ NULL, /* next */ diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c index 9e8ad62fbe7..a781cb2d743 100644 --- a/gcc/mode-switching.c +++ b/gcc/mode-switching.c @@ -736,7 +736,7 @@ rest_of_handle_mode_switching (void) struct tree_opt_pass pass_mode_switching = { - NULL, /* name */ + "mode-sw", /* name */ gate_mode_switching, /* gate */ rest_of_handle_mode_switching, /* execute */ NULL, /* sub */ @@ -747,6 +747,6 @@ struct tree_opt_pass pass_mode_switching = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/recog.c b/gcc/recog.c index 8e6a62b6dd0..23012dcf1c4 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -3460,7 +3460,7 @@ rest_of_handle_split_all_insns (void) struct tree_opt_pass pass_split_all_insns = { - NULL, /* name */ + "split1", /* name */ NULL, /* gate */ rest_of_handle_split_all_insns, /* execute */ NULL, /* sub */ @@ -3471,7 +3471,7 @@ struct tree_opt_pass pass_split_all_insns = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; @@ -3489,7 +3489,7 @@ gate_do_final_split (void) struct tree_opt_pass pass_split_for_shorten_branches = { - NULL, /* name */ + "split3", /* name */ gate_do_final_split, /* gate */ split_all_insns_noflow, /* execute */ NULL, /* sub */ @@ -3500,7 +3500,7 @@ struct tree_opt_pass pass_split_for_shorten_branches = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; @@ -3525,7 +3525,7 @@ gate_handle_split_before_regstack (void) struct tree_opt_pass pass_split_before_regstack = { - NULL, /* name */ + "split2", /* name */ gate_handle_split_before_regstack, /* gate */ rest_of_handle_split_all_insns, /* execute */ NULL, /* sub */ @@ -3536,6 +3536,6 @@ struct tree_opt_pass pass_split_before_regstack = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ }; diff --git a/gcc/regmove.c b/gcc/regmove.c index 08cacf42bd1..e6bbc8ca65d 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -2524,7 +2524,7 @@ rest_of_handle_stack_adjustments (void) struct tree_opt_pass pass_stack_adjustments = { - NULL, /* name */ + "csa", /* name */ gate_handle_stack_adjustments, /* gate */ rest_of_handle_stack_adjustments, /* execute */ NULL, /* sub */ diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index d160e497cdd..782982eaf51 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -258,7 +258,7 @@ execute_fixup_cfg (void) struct tree_opt_pass pass_fixup_cfg = { - NULL, /* name */ + "fixupcfg", /* name */ NULL, /* gate */ execute_fixup_cfg, /* execute */ NULL, /* sub */ @@ -269,7 +269,7 @@ struct tree_opt_pass pass_fixup_cfg = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - 0, /* todo_flags_finish */ + TODO_dump_func, /* todo_flags_finish */ 0 /* letter */ };