aboutsummaryrefslogtreecommitdiff
path: root/gcc/basic-block.h
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-09-11 18:58:57 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-09-11 16:58:57 +0000
commit4262e6231adab0ff8a3da565bf620037ce9b1343 (patch)
treee55ae3fa06b243cd5fe8bf5b133011184ac58d17 /gcc/basic-block.h
parent201556f0e005802b8ebb206a193a6feb55a555af (diff)
downloadgcc-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.h19
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));