diff options
author | Jan Hubicka <jh@suse.cz> | 2001-09-11 18:58:57 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-09-11 16:58:57 +0000 |
commit | 4262e6231adab0ff8a3da565bf620037ce9b1343 (patch) | |
tree | e55ae3fa06b243cd5fe8bf5b133011184ac58d17 /gcc/basic-block.h | |
parent | 201556f0e005802b8ebb206a193a6feb55a555af (diff) | |
download | gcc-4262e6231adab0ff8a3da565bf620037ce9b1343.zip gcc-4262e6231adab0ff8a3da565bf620037ce9b1343.tar.gz gcc-4262e6231adab0ff8a3da565bf620037ce9b1343.tar.bz2 |
basic-block.h (EDGE_CRITICAL): Remove; renumber other flags.
* basic-block.h (EDGE_CRITICAL): Remove; renumber other flags.
(EDGE_CRITICAL_P): New predicate.
* cfg.c (force_nonfallthru_and_redirect, split_edge): Kill EDGE_CRITICAL
handling.
(insert_insn_on_edge): Use EDGE_CRITICAL_P.
(dump_edge_info): Remove "crit".
* cfganal.c (mark_critical_edges): Kill.
* cfgbuild.c (find_basic_blocks): Remove mark_critical_edges call.
* cfgcleanup.c (cleanup_cfg): Likewise.
* profile.c (instrument_edges): Use EDGE_CRITICAL_P.
(find_spanning_tree): Likewise.
* reg-stack.c (convert_regs_1): Likewise.
* ssa.c (mark_regs_equivalent_over_bad_edges): Likewise.
* basic-block.h (create_basic_block_structure): New.
(create_basic_block): Update prototype.
(force_nonfallthru): New.
* bb-reorder.c (fixup_reorder_chain): Fixup use force_nonfallthru.
* cfg.c (create_basic_block_structure): Rename from create_basic_block;
handle updating of block_for_insn, creating of empty BBs and BBs at
the end of INSN chain.
(create_basic_block): New function.
(split_block): Use create_basic_block.
(force_nonfallthru_and_redirect): Break out from ...; cleanup
(redirect_edge_and_branch_force): ... here.
(force_nonfallthru): New.
(split_edge): Rewrite to use force_nonfallthru and create_block.
* cfgbuild.c (find_basic_blocks_1): Use create_basic_block_structure.
(find_basic_blocks): Free basic_block_for_insn.
* cfgcleanup.c (merge_blocks): Use force_nonfallthru.
* cfg.c: Fix formating.
* cfgcleanup.c: Fix formating.
(merge_blocks, tail_recursion_label_p): Return bool.
(merge_blocks_move_predecessor_nojumps,
merge_blocks_move_successor_nojumps): Return void.
From-SVN: r45549
Diffstat (limited to 'gcc/basic-block.h')
-rw-r--r-- | gcc/basic-block.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 1a49c5f..95ee0dd 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -140,12 +140,11 @@ typedef struct edge_def { } *edge; #define EDGE_FALLTHRU 1 -#define EDGE_CRITICAL 2 -#define EDGE_ABNORMAL 4 -#define EDGE_ABNORMAL_CALL 8 -#define EDGE_EH 16 -#define EDGE_FAKE 32 -#define EDGE_DFS_BACK 64 +#define EDGE_ABNORMAL 2 +#define EDGE_ABNORMAL_CALL 4 +#define EDGE_EH 8 +#define EDGE_FAKE 16 +#define EDGE_DFS_BACK 32 #define EDGE_COMPLEX (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH) @@ -315,7 +314,8 @@ extern void remove_edge PARAMS ((edge)); extern void redirect_edge_succ PARAMS ((edge, basic_block)); extern edge redirect_edge_succ_nodup PARAMS ((edge, basic_block)); extern void redirect_edge_pred PARAMS ((edge, basic_block)); -extern void create_basic_block PARAMS ((int, rtx, rtx, rtx)); +extern basic_block create_basic_block_structure PARAMS ((int, rtx, rtx, rtx)); +extern basic_block create_basic_block PARAMS ((int, rtx, rtx)); extern int flow_delete_block PARAMS ((basic_block)); extern void merge_blocks_nomove PARAMS ((basic_block, basic_block)); extern void tidy_fallthru_edge PARAMS ((edge, basic_block, @@ -536,6 +536,10 @@ struct edge_list + REG_BR_PROB_BASE / 2) \ / REG_BR_PROB_BASE) +/* Return nonzero if edge is critical. */ +#define EDGE_CRITICAL_P(e) ((e)->src->succ->succ_next \ + && (e)->dest->pred->pred_next) + struct edge_list * create_edge_list PARAMS ((void)); void free_edge_list PARAMS ((struct edge_list *)); void print_edge_list PARAMS ((FILE *, struct edge_list *)); @@ -629,6 +633,7 @@ extern void allocate_bb_life_data PARAMS ((void)); extern void find_unreachable_blocks PARAMS ((void)); extern void delete_noop_moves PARAMS ((rtx)); extern basic_block redirect_edge_and_branch_force PARAMS ((edge, basic_block)); +extern basic_block force_nonfallthru PARAMS ((edge)); extern bool redirect_edge_and_branch PARAMS ((edge, basic_block)); extern rtx block_label PARAMS ((basic_block)); extern bool forwarder_block_p PARAMS ((basic_block)); |