aboutsummaryrefslogtreecommitdiff
path: root/gcc/basic-block.h
diff options
context:
space:
mode:
authorZdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>2003-03-05 23:05:18 +0100
committerZdenek Dvorak <rakdver@gcc.gnu.org>2003-03-05 22:05:18 +0000
commit35b0708052ed3381ee58d4e6251e3e43da411a4e (patch)
tree8650ebaed410b4e61e93edf3cebafec476c895b8 /gcc/basic-block.h
parentbb182d238a42a4f354734e89389561d0ff05db1a (diff)
downloadgcc-35b0708052ed3381ee58d4e6251e3e43da411a4e.zip
gcc-35b0708052ed3381ee58d4e6251e3e43da411a4e.tar.gz
gcc-35b0708052ed3381ee58d4e6251e3e43da411a4e.tar.bz2
basic-block.h (EDGE_IRREDUCIBLE_LOOP, [...]): New.
* basic-block.h (EDGE_IRREDUCIBLE_LOOP, EDGE_ALL_FLAGS): New. * cfg.c (dump_edge_info): Add EDGE_IRREDUCIBLE_LOOP flag dump. * cfgloop.c (flow_loop_free): Made global. (establish_preds): New static function. (flow_loop_tree_node_add): Handle subloops of added loop correctly. (get_loop_exit_edges): New. (verify_loop_structure): Verify EDGE_IRREDUCIBLE_LOOP flags. * cfgloop.h (flow_loop_free, get_loop_exit_edges, unloop): Declare. * cfgloopanal.c (mark_irreducible_loops): Mark edges in irreducible loops. * cfgloopmanip.c (loop_delete_branch_edge): Allow to test for removability of an edge. (fix_irreducible_loops): New static function. (find_path, remove_path): Add ability to remove enclosing loops. (unloop): New. (copy_bbs, duplicate_loop_to_header_edge): Use EDGE_IRREDUCIBLE_LOOP flags. * cfgrtl.c (verify_flow_info): Handle EDGE_IRREDUCIBLE_LOOP flag. * loop-unroll.c (peel_loops_completely): Do not duplicate loop if not neccessary. (decide_peel_completely, peel_loops_completely): Allow complete peeling of non-duplicable once rolling loops. * loop-unswitch.c (unswitch_loop): Update EDGE_IRREDUCIBLE_LOOP flags. From-SVN: r63864
Diffstat (limited to 'gcc/basic-block.h')
-rw-r--r--gcc/basic-block.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 680bba5..e62419f 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -150,6 +150,8 @@ typedef struct edge_def {
#define EDGE_DFS_BACK 32 /* A backwards edge */
#define EDGE_CAN_FALLTHRU 64 /* Candidate for straight line
flow. */
+#define EDGE_IRREDUCIBLE_LOOP 128 /* Part of irreducible loop. */
+#define EDGE_ALL_FLAGS 255
#define EDGE_COMPLEX (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH)
@@ -540,7 +542,7 @@ extern void init_flow PARAMS ((void));
extern void reorder_basic_blocks PARAMS ((void));
extern void dump_bb PARAMS ((basic_block, FILE *));
extern void debug_bb PARAMS ((basic_block));
-extern void debug_bb_n PARAMS ((int));
+extern basic_block debug_bb_n PARAMS ((int));
extern void dump_regset PARAMS ((regset, FILE *));
extern void debug_regset PARAMS ((regset));
extern void allocate_reg_life_data PARAMS ((void));