summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2002-12-04 15:42:16 +0000
committerobrien <obrien@FreeBSD.org>2002-12-04 15:42:16 +0000
commit7a1080fa5c329ea8a9505e51ce151719955bcfa2 (patch)
tree78b77287e56e2a87be73638176124be85a8fc6c7 /contrib/gcc/cfgrtl.c
parentef3bb1318428b8cfb1c8287f61b9b1f23f9bf0b5 (diff)
downloadFreeBSD-src-7a1080fa5c329ea8a9505e51ce151719955bcfa2.zip
FreeBSD-src-7a1080fa5c329ea8a9505e51ce151719955bcfa2.tar.gz
Gcc 3.2.1 release virgin vendor import. (19-Nov-2002)
Diffstat (limited to 'contrib/gcc/cfgrtl.c')
-rw-r--r--contrib/gcc/cfgrtl.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/contrib/gcc/cfgrtl.c b/contrib/gcc/cfgrtl.c
index bbcdfbb..e2cb773 100644
--- a/contrib/gcc/cfgrtl.c
+++ b/contrib/gcc/cfgrtl.c
@@ -665,6 +665,7 @@ try_redirect_by_replacing_jump (e, target)
edge tmp;
rtx set;
int fallthru = 0;
+ rtx table;
/* Verify that all targets will be TARGET. */
for (tmp = src->succ; tmp; tmp = tmp->succ_next)
@@ -674,6 +675,13 @@ 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);
if (!set || side_effects_p (set))
OpenPOWER on IntegriCloud