diff options
author | Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | 2003-03-05 23:05:18 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2003-03-05 22:05:18 +0000 |
commit | 35b0708052ed3381ee58d4e6251e3e43da411a4e (patch) | |
tree | 8650ebaed410b4e61e93edf3cebafec476c895b8 /gcc/basic-block.h | |
parent | bb182d238a42a4f354734e89389561d0ff05db1a (diff) | |
download | gcc-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.h | 4 |
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)); |