aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-07-11 21:42:35 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-07-11 19:42:35 +0000
commit46fac66482f1cf5cc61f7fef9de8b7593c8357e7 (patch)
tree60903d3543bd7ef55ab3cdb0ddd8b7aed79a1788 /gcc/toplev.c
parent669f7a035a384894ac482e00c291d393a21ba2d0 (diff)
downloadgcc-46fac66482f1cf5cc61f7fef9de8b7593c8357e7.zip
gcc-46fac66482f1cf5cc61f7fef9de8b7593c8357e7.tar.gz
gcc-46fac66482f1cf5cc61f7fef9de8b7593c8357e7.tar.bz2
flow.c (merge_blocks_move_successor_nojumps): Do not crash when fallthru edge is present.
* flow.c (merge_blocks_move_successor_nojumps): Do not crash when fallthru edge is present. (mege_blocks): Handle case where creation of jump insn is required. * basic-block.h (CLEANUP_EXPENSIVE, CLEANUP_CROSSJUMP, CLEANUP_POST_REGSTACK): New constants. * except.c (finish_eh_generation): Update call of cleanup_cfg, * jump.c (rtx_renumbered_equal_p): Handle 't' fields. * output.h (cleanup_cfg): Update prototype. * reg-stack.c (reg_to_stack): Use cleanup_cfg instead of jump_optimize * sibcall.c (optimize_sibling_and_tail_recursive_call): Update cleanup_cfg call; kill missleading comment. * toplev.c (rest_of_compilation): Update all cleanup_cfg calls. * flow.c (merge_blocks, try_optimize_cfg, cleanup_cfg): Accept mode parameter; control optimizations performed using it. (flow_find_cross_jump, outgoing_edges_match, try_crossjump_to_edge, try_crossjump_bb): New functions. From-SVN: r43950
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 90258df..3bef83a 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2963,7 +2963,7 @@ rest_of_compilation (decl)
open_dump_file (DFI_ssa, decl);
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg ();
+ cleanup_cfg (CLEANUP_EXPENSIVE);
convert_to_ssa ();
close_dump_file (DFI_ssa, print_rtl_with_bb, insns);
@@ -3028,7 +3028,7 @@ rest_of_compilation (decl)
if (optimize > 0)
{
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg ();
+ cleanup_cfg (CLEANUP_EXPENSIVE);
/* ??? Run if-conversion before delete_null_pointer_checks,
since the later does not preserve the CFG. This should
@@ -3098,7 +3098,7 @@ rest_of_compilation (decl)
timevar_push (TV_JUMP);
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg ();
+ cleanup_cfg (CLEANUP_EXPENSIVE);
delete_null_pointer_checks (insns);
timevar_pop (TV_JUMP);
@@ -3132,7 +3132,7 @@ rest_of_compilation (decl)
open_dump_file (DFI_gcse, decl);
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg ();
+ cleanup_cfg (CLEANUP_EXPENSIVE);
tem = gcse_main (insns, rtl_dump_file);
save_csb = flag_cse_skip_blocks;
@@ -3236,7 +3236,7 @@ rest_of_compilation (decl)
timevar_push (TV_IFCVT);
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg ();
+ cleanup_cfg (CLEANUP_EXPENSIVE);
if_convert (0);
timevar_pop(TV_IFCVT);
@@ -3282,7 +3282,7 @@ rest_of_compilation (decl)
open_dump_file (DFI_cfg, decl);
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg ();
+ cleanup_cfg (optimize ? CLEANUP_EXPENSIVE : 0);
check_function_return_warnings ();
/* It may make more sense to mark constant functions after dead code is
@@ -3365,7 +3365,7 @@ rest_of_compilation (decl)
timevar_push (TV_FLOW);
find_basic_blocks (insns, max_reg_num (), rtl_dump_file);
- cleanup_cfg ();
+ cleanup_cfg (CLEANUP_EXPENSIVE);
/* Blimey. We've got to have the CFG up to date for the call to
if_convert below. However, the random deletion of blocks
@@ -3576,7 +3576,7 @@ rest_of_compilation (decl)
if (optimize)
{
- cleanup_cfg ();
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_CROSSJUMP);
life_analysis (insns, rtl_dump_file, PROP_FINAL);
/* This is kind of a heuristic. We need to run combine_stack_adjustments