diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2007-03-15 20:08:29 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2007-03-15 20:08:29 +0000 |
commit | 49ea3702aa813f8181f4803830e0506abbd19e7a (patch) | |
tree | 9b1ab29c213a2680b9ef2b4f06ef1795ab842e8d /gcc/cfgrtl.c | |
parent | 30bcc028906e873ba60715aaed036248e1420e10 (diff) | |
download | gcc-49ea3702aa813f8181f4803830e0506abbd19e7a.tar.gz |
cfglayout.c (fixup_reorder_chain): Postpone deleting dead jump tables...
* cfglayout.c (fixup_reorder_chain): Postpone deleting dead
jump tables, move the call to delete_dead_jumptables from here...
(cfg_layout_finalize): ...to here. But rebuild jump labels first.
* cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
don't allow merging of blocks that try_redirect_by_replacing_jump
also does not handle when not optimizing.
From-SVN: r122957
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r-- | gcc/cfgrtl.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 1eb75abe6d2..9bc2b99a64f 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -2519,10 +2519,11 @@ cfg_layout_can_merge_blocks_p (basic_block a, basic_block b) /* Must be simple edge. */ && !(single_succ_edge (a)->flags & EDGE_COMPLEX) && a != ENTRY_BLOCK_PTR && b != EXIT_BLOCK_PTR - /* If the jump insn has side effects, - we can't kill the edge. */ + /* If the jump insn has side effects, we can't kill the edge. + When not optimizing, try_redirect_by_replacing_jump will + not allow us to redirect an edge by replacing a table jump. */ && (!JUMP_P (BB_END (a)) - || (reload_completed + || ((!optimize || reload_completed) ? simplejump_p (BB_END (a)) : onlyjump_p (BB_END (a))))); } |