tree-pass.h (pass_into_cfg_layout_mode, [...]): Declare.

* tree-pass.h (pass_into_cfg_layout_mode,
	pass_outof_cfg_layout_mode): Declare.
	* cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
	pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
	* passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
	(pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.

From-SVN: r122858
This commit is contained in:
Steven Bosscher 2007-03-12 19:38:06 +00:00
parent 6da4bc4e6e
commit dacb3cda32
4 changed files with 68 additions and 0 deletions

View File

@ -1,3 +1,12 @@
2007-03-12 Steven Bosscher <steven@gcc.gnu.org>
* tree-pass.h (pass_into_cfg_layout_mode,
pass_outof_cfg_layout_mode): Declare.
* cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
* passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
(pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* c-decl.c (warn_variable_length_array): New function.

View File

@ -347,6 +347,60 @@ struct tree_opt_pass pass_insn_locators_initialize =
0 /* letter */
};
static unsigned int
into_cfg_layout_mode (void)
{
cfg_layout_initialize (0);
return 0;
}
static unsigned int
outof_cfg_layout_mode (void)
{
basic_block bb;
FOR_EACH_BB (bb)
if (bb->next_bb != EXIT_BLOCK_PTR)
bb->aux = bb->next_bb;
cfg_layout_finalize ();
return 0;
}
struct tree_opt_pass pass_into_cfg_layout_mode =
{
"into_cfglayout", /* name */
NULL, /* gate */
into_cfg_layout_mode, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
0, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
struct tree_opt_pass pass_outof_cfg_layout_mode =
{
"outof_cfglayout", /* name */
NULL, /* gate */
outof_cfg_layout_mode, /* execute */
NULL, /* sub */
NULL, /* next */
0, /* static_pass_number */
0, /* tv_id */
0, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
TODO_dump_func, /* todo_flags_finish */
0 /* letter */
};
/* For each lexical block, set BLOCK_NUMBER to the depth at which it is
found in the block tree. */

View File

@ -658,6 +658,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_initial_value_sets);
NEXT_PASS (pass_unshare_all_rtl);
NEXT_PASS (pass_instantiate_virtual_regs);
NEXT_PASS (pass_into_cfg_layout_mode);
NEXT_PASS (pass_jump2);
NEXT_PASS (pass_lower_subreg);
NEXT_PASS (pass_cse);
@ -665,6 +666,7 @@ init_optimization_passes (void)
NEXT_PASS (pass_gcse);
NEXT_PASS (pass_jump_bypass);
NEXT_PASS (pass_rtl_ifcvt);
NEXT_PASS (pass_outof_cfg_layout_mode);
NEXT_PASS (pass_tracer);
/* Perform loop optimizations. It might be better to do them a bit
sooner, but we want the profile feedback to work more

View File

@ -344,6 +344,9 @@ extern struct tree_opt_pass pass_profiling;
extern struct tree_opt_pass pass_rtl_ifcvt;
extern struct tree_opt_pass pass_tracer;
extern struct tree_opt_pass pass_into_cfg_layout_mode;
extern struct tree_opt_pass pass_outof_cfg_layout_mode;
extern struct tree_opt_pass pass_loop2;
extern struct tree_opt_pass pass_rtl_loop_init;
extern struct tree_opt_pass pass_rtl_move_loop_invariants;