diff options
author | Jan Hubicka <jh@suse.cz> | 2001-07-11 21:42:35 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-07-11 19:42:35 +0000 |
commit | 46fac66482f1cf5cc61f7fef9de8b7593c8357e7 (patch) | |
tree | 60903d3543bd7ef55ab3cdb0ddd8b7aed79a1788 /gcc/toplev.c | |
parent | 669f7a035a384894ac482e00c291d393a21ba2d0 (diff) | |
download | gcc-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.c | 16 |
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 |