summaryrefslogtreecommitdiff
path: root/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-02 17:51:48 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-02 17:51:48 +0000
commit27bcd4c149c032fdb87f1763f590177c1e6e73ec (patch)
tree3584a25f602ea6b06f29196faa368726a894e5db /gcc/cfgrtl.c
parentf206296f95beecbc552bbf248a361f07895204d0 (diff)
downloadgcc-27bcd4c149c032fdb87f1763f590177c1e6e73ec.tar.gz
* cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed
jumps post reload. * toplev.c (rest_of_compilation): Revert Richard's patch. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53052 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r--gcc/cfgrtl.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index f5a82383a00..3fcd8a40357 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -713,7 +713,7 @@ try_redirect_by_replacing_jump (e, target)
basic_block src = e->src;
rtx insn = src->end, kill_from;
edge tmp;
- rtx set;
+ rtx set, table;
int fallthru = 0;
/* Verify that all targets will be TARGET. */
@@ -723,6 +723,12 @@ try_redirect_by_replacing_jump (e, target)
if (tmp || !onlyjump_p (insn))
return false;
+ if (reload_completed && JUMP_LABEL (insn)
+ && (table = NEXT_INSN (JUMP_LABEL (insn))) != NULL_RTX
+ && GET_CODE (table) == JUMP_INSN
+ && (GET_CODE (PATTERN (table)) == ADDR_VEC
+ || GET_CODE (PATTERN (table)) == ADDR_DIFF_VEC))
+ return false;
/* Avoid removing branch with side effects. */
set = single_set (insn);