summaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-28 22:22:50 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-28 22:22:50 +0000
commit777e249ae8010727efffb45959cbdf7a2eed5c1b (patch)
tree838b5c749cb462341ad1b64dc6cc0bd1daa6820f /gcc/toplev.c
parent271f3c2e97c4ffb6dcf82ba570f6be2244bf963d (diff)
downloadgcc-777e249ae8010727efffb45959cbdf7a2eed5c1b.tar.gz
* flow.c (find_basic_blocks): Remove do_cleanup argument.
Break out that code ... (cleanup_cfg): ... here. (commit_one_edge_insertion): Detect a return instruction being emitted to an edge. Emit a barrier following; clear fallthru. (commit_edge_insertions): Verify CFG consistency. * function.c (expand_function_start): Kill unused variable. (expand_function_end): Likewise. (thread_prologue_and_epilogue_insns): Use insert_insn_on_edge to insert the epilogue. * gcse.c (gcse_main): Adjust for find_basic_blocks change. (delete_null_pointer_checks): Likewise. * output.h: Likewise. * reg-stack.c (reg_to_stack): Likewise. * toplev.c (rest_of_compilation): Likewise. Run thread_prologue_and_epilogue_insns after rebuilding the CFG. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31676 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 189c3e71353..136d9666270 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -3216,7 +3216,8 @@ rest_of_compilation (decl)
TIMEVAR
(flow_time,
{
- find_basic_blocks (insns, max_reg_num (), rtl_dump_file, 1);
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ cleanup_cfg (insns);
if (optimize)
calculate_loop_depth (rtl_dump_file);
life_analysis (insns, max_reg_num (), rtl_dump_file, 1);
@@ -3384,13 +3385,6 @@ rest_of_compilation (decl)
if (rebuild_label_notes_after_reload)
TIMEVAR (jump_time, rebuild_jump_labels (insns));
- /* On some machines, the prologue and epilogue code, or parts thereof,
- can be represented as RTL. Doing so lets us schedule insns between
- it and the rest of the code and also allows delayed branch
- scheduling to operate in the epilogue. */
-
- thread_prologue_and_epilogue_insns (insns);
-
/* If optimizing and we are performing instruction scheduling after
reload, then go ahead and split insns now since we are about to
recompute flow information anyway.
@@ -3412,12 +3406,23 @@ rest_of_compilation (decl)
if (flow2_dump)
open_dump_file (".14.flow2", decl_printable_name (decl, 2));
+ TIMEVAR (flow2_time,
+ {
+ find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
+ });
+
+ /* On some machines, the prologue and epilogue code, or parts thereof,
+ can be represented as RTL. Doing so lets us schedule insns between
+ it and the rest of the code and also allows delayed branch
+ scheduling to operate in the epilogue. */
+ thread_prologue_and_epilogue_insns (insns);
+
if (optimize)
{
TIMEVAR
(flow2_time,
{
- find_basic_blocks (insns, max_reg_num (), rtl_dump_file, 1);
+ cleanup_cfg (insns);
life_analysis (insns, max_reg_num (), rtl_dump_file, 1);
});