aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfglayout.h
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>2003-01-24 21:27:02 +0100
committerZdenek Dvorak <rakdver@gcc.gnu.org>2003-01-24 20:27:02 +0000
commit3d436d2ac575b85dc7c787fbeacc3c08597000c3 (patch)
treedcedb00430c0c7c8dca147fb1c6499d017c95537 /gcc/cfglayout.h
parent55d0e5e0223bae2b64faf4b858b59eb486efbe4b (diff)
downloadgcc-3d436d2ac575b85dc7c787fbeacc3c08597000c3.zip
gcc-3d436d2ac575b85dc7c787fbeacc3c08597000c3.tar.gz
gcc-3d436d2ac575b85dc7c787fbeacc3c08597000c3.tar.bz2
cfgloopanal.c: New file.
* cfgloopanal.c: New file. * cfgloopmanip.c: New file. * Makefile.in (cfgloopanal.o, cfgloopmanip.o): New. (toplev.o, loop.o, doloop.o, unroll.o, cfgloop.o, predict.o, cfglayout.o): Add dependency on cfgloop.h. (cfgloop.o): Add flags.h dependency. * basic-block.h (BB_IRREDUCIBLE_LOOP, BB_SUPERBLOCK): New flags. (VLS_EXPECT_PREHEADERS, VLS_EXPECT_SIMPLE_LATCHES): Removed. (struct loop, struct loops, flow_loops_find, flow_loops_update, flow_loops_free, flow_loops_dump, flow_loop_dump, flow_loop_scan, flow_loop_tree_node_add, flow_loop_tree_node_remove, LOOP_TREE,,LOOP_PRE_HEADER, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES, LOOP_ALL, flow_loop_outside_edge_p, flow_loop_nested_p, flow_bb_inside_loop_p, get_loop_body, loop_preheader_edge, loop_latch_edge, add_bb_to_loop, remove_bb_from_loops, find_common_loop, verify_loop_structure): Declarations moved to ... * cfgloop.h: New file. * bb-reorder.c (reorder_basic_blocks): Modified. * cfglayout.c: Include cfgloop.h. (cleanup_unconditional_jumps, cfg_layout_redirect_edge, cfg_layout_duplicate_bb, cfg_layout_initialize): Update loop structure. (break_superblocks): New static function. (cfg_layout_finalize): Use it. (cfg_layout_split_block): New function. * cfglayout.h (struct reorder_block_def): Add copy and duplicated fields. (cfg_layout_initialize, cfg_layout_redirect_edge): Declaration changed. (cfg_layout_split_block): Declare. * cfgloop.c: Include cfgloop.h and flags.h. (flow_loop_dump, flow_loops_free, flow_loop_exit_edges_find, get_loop_body): Avoid signed versus unsigned comparison warnings. (make_forwarder_block, flow_loops_find, loop_preheader_edge, loop_latch_edge): Modified. (verify_loop_structure): Modified to use flags stored in loop structure; check irreducible loops. (cancel_loop, cancel_loop_tree): New functions. (estimate_probability): Use loop analysis code for predictions. (estimate_loops_at_level): Avoid signed versus unsigned comparison warnings. * doloop.c: Include cfgloop.h. * loop.c: Include cfgloop.h. * predict.c: Include cfgloop.h. * toplev.c: Include cfgloop.h. * unroll.c: Include cfgloop.h. * tracer.c (tracer): Modified. From-SVN: r61730
Diffstat (limited to 'gcc/cfglayout.h')
-rw-r--r--gcc/cfglayout.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/cfglayout.h b/gcc/cfglayout.h
index e4e27d0..aec5e7e 100644
--- a/gcc/cfglayout.h
+++ b/gcc/cfglayout.h
@@ -25,6 +25,9 @@ typedef struct reorder_block_def
rtx footer;
basic_block next;
basic_block original;
+ /* Used by loop copying. */
+ basic_block copy;
+ int duplicated;
/* These fields are used by bb-reorder pass. */
int visited;
@@ -32,10 +35,11 @@ typedef struct reorder_block_def
#define RBI(BB) ((reorder_block_def) (BB)->aux)
-extern void cfg_layout_initialize PARAMS ((void));
+extern void cfg_layout_initialize PARAMS ((struct loops *));
extern void cfg_layout_finalize PARAMS ((void));
extern bool cfg_layout_can_duplicate_bb_p PARAMS ((basic_block));
extern basic_block cfg_layout_duplicate_bb PARAMS ((basic_block, edge));
extern void scope_to_insns_initialize PARAMS ((void));
extern void scope_to_insns_finalize PARAMS ((void));
-extern void cfg_layout_redirect_edge PARAMS ((edge, basic_block));
+extern bool cfg_layout_redirect_edge PARAMS ((edge, basic_block));
+extern edge cfg_layout_split_block PARAMS ((basic_block, rtx));