diff options
author | Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | 2003-01-24 21:27:02 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2003-01-24 20:27:02 +0000 |
commit | 3d436d2ac575b85dc7c787fbeacc3c08597000c3 (patch) | |
tree | dcedb00430c0c7c8dca147fb1c6499d017c95537 /gcc/cfglayout.h | |
parent | 55d0e5e0223bae2b64faf4b858b59eb486efbe4b (diff) | |
download | gcc-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.h | 8 |
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)); |