+2005-08-09 Paolo Bonzini <bonzini@gnu.org>
+
+ * 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 <inaoka.kazuhiro@renesas.com>
PR 23309
struct tree_opt_pass pass_duplicate_computed_gotos =
{
- NULL, /* name */
+ "compgotos", /* name */
gate_duplicate_computed_gotos, /* gate */
duplicate_computed_gotos, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_partition_blocks =
{
- NULL, /* name */
+ "bbpart", /* name */
gate_handle_partition_blocks, /* gate */
rest_of_handle_partition_blocks, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_insn_locators_initialize =
{
- NULL, /* name */
+ "locators", /* name */
NULL, /* gate */
insn_locators_initialize, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_unshare_all_rtl =
{
- NULL, /* name */
+ "unshare", /* name */
NULL, /* gate */
unshare_all_rtl, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_remove_unnecessary_notes =
{
- NULL, /* name */
+ "eunotes", /* name */
NULL, /* gate */
remove_unnecessary_notes, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
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 */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_shorten_branches =
{
- NULL, /* name */
+ "shorten", /* name */
NULL, /* gate */
rest_of_handle_shorten_branches, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
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 */
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
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 */
struct tree_opt_pass pass_life =
{
- "life", /* name */
+ "life1", /* name */
NULL, /* gate */
rest_of_handle_life, /* execute */
NULL, /* sub */
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)
struct tree_opt_pass pass_instantiate_virtual_regs =
{
- NULL, /* name */
+ "vregs", /* name */
NULL, /* gate */
instantiate_virtual_regs, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_initial_value_sets =
{
- NULL, /* name */
+ "initvals", /* name */
NULL, /* gate */
emit_initial_value_sets, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_cleanup_barriers =
{
- NULL, /* name */
+ "barriers", /* name */
NULL, /* gate */
cleanup_barriers, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_purge_lineno_notes =
{
- NULL, /* name */
+ "elnotes", /* name */
NULL, /* gate */
purge_line_number_notes, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_rtl_loop_init =
{
- "loopinit", /* name */
+ "loop2_init", /* name */
NULL, /* gate */
rtl_loop_init, /* execute */
NULL, /* sub */
struct tree_opt_pass pass_rtl_loop_done =
{
- "loopdone", /* name */
+ "loop2_done", /* name */
NULL, /* gate */
rtl_loop_done, /* execute */
NULL, /* sub */
\f
/* 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 */
\f
/* 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 */
\f
/* 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;
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 */
\f
/* 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 */
struct tree_opt_pass pass_mode_switching =
{
- NULL, /* name */
+ "mode-sw", /* name */
gate_mode_switching, /* gate */
rest_of_handle_mode_switching, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_split_all_insns =
{
- NULL, /* name */
+ "split1", /* name */
NULL, /* gate */
rest_of_handle_split_all_insns, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
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 */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
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 */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_stack_adjustments =
{
- NULL, /* name */
+ "csa", /* name */
gate_handle_stack_adjustments, /* gate */
rest_of_handle_stack_adjustments, /* execute */
NULL, /* sub */
struct tree_opt_pass pass_fixup_cfg =
{
- NULL, /* name */
+ "fixupcfg", /* name */
NULL, /* gate */
execute_fixup_cfg, /* execute */
NULL, /* sub */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- 0, /* todo_flags_finish */
+ TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};