summaryrefslogtreecommitdiff
path: root/gcc/cfgbuild.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-11 16:58:57 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-11 16:58:57 +0000
commite76f35e8d4be0b7032d74033a0ebedc704134961 (patch)
treee55ae3fa06b243cd5fe8bf5b133011184ac58d17 /gcc/cfgbuild.c
parentbb2821c04b6546dd5f014b99ab45d6ef5c55f874 (diff)
downloadgcc-e76f35e8d4be0b7032d74033a0ebedc704134961.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45549 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgbuild.c')
-rw-r--r--gcc/cfgbuild.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c
index ea1c7327b34..a6ac3a08f64 100644
--- a/gcc/cfgbuild.c
+++ b/gcc/cfgbuild.c
@@ -452,7 +452,7 @@ find_basic_blocks_1 (f)
to a barrier or some such, no need to do it again. */
if (head != NULL_RTX)
{
- create_basic_block (i++, head, end, bb_note);
+ create_basic_block_structure (i++, head, end, bb_note);
bb_note = NULL_RTX;
}
@@ -523,7 +523,7 @@ find_basic_blocks_1 (f)
end = insn;
new_bb_exclusive:
- create_basic_block (i++, head, end, bb_note);
+ create_basic_block_structure (i++, head, end, bb_note);
head = end = NULL_RTX;
bb_note = NULL_RTX;
break;
@@ -579,7 +579,7 @@ find_basic_blocks_1 (f)
}
if (head != NULL_RTX)
- create_basic_block (i++, head, end, bb_note);
+ create_basic_block_structure (i++, head, end, bb_note);
else if (bb_note)
flow_delete_insn (bb_note);
@@ -604,6 +604,10 @@ find_basic_blocks (f, nregs, file)
int max_uid;
timevar_push (TV_CFG);
+ if (basic_block_for_insn)
+ VARRAY_FREE (basic_block_for_insn);
+ basic_block_for_insn = 0;
+
/* Flush out existing data. */
if (basic_block_info != NULL)
{
@@ -655,8 +659,6 @@ find_basic_blocks (f, nregs, file)
here and cleanup_cfg, e.g. thread_prologue_and_epilogue_insns. */
tidy_fallthru_edges ();
- mark_critical_edges ();
-
#ifdef ENABLE_CHECKING
verify_flow_info ();
#endif