summaryrefslogtreecommitdiff
path: root/gcc/cfglayout.c
diff options
context:
space:
mode:
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>2007-03-12 19:38:06 +0000
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>2007-03-12 19:38:06 +0000
commit154480b16c909e4cd559739cf3753f587d603a69 (patch)
tree15607dc253aed0b6bf688c4fe381a3d1c758d403 /gcc/cfglayout.c
parent974bc84e97db9d9741e71dd74930e98f0bec94e9 (diff)
downloadgcc-154480b16c909e4cd559739cf3753f587d603a69.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122858 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfglayout.c')
-rw-r--r--gcc/cfglayout.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index bbdd7a25b41..545cc5d77fc 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -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. */