aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@cygnus.co.uk>1999-08-27 09:39:14 +0000
committerBernd Schmidt <crux@gcc.gnu.org>1999-08-27 09:39:14 +0000
commit6c1b3bf290b57d8adb19bda3ae15368a4a402a01 (patch)
treed990e8b1d637e4db51f9f8488d7b3a0e29227fea /gcc/combine.c
parent7cfc8a78302146d7c2a27ab6fe838c47c8d33f9b (diff)
downloadgcc-6c1b3bf290b57d8adb19bda3ae15368a4a402a01.zip
gcc-6c1b3bf290b57d8adb19bda3ae15368a4a402a01.tar.gz
gcc-6c1b3bf290b57d8adb19bda3ae15368a4a402a01.tar.bz2
Fix for 'Deadly optimization bug' (see egcs mailing list archive)
From-SVN: r28928
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index dcd60c2..9bedd61 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -10832,6 +10832,11 @@ get_last_value (x)
{
rtx insn, set;
+ /* We can't do anything if the value is set in between the insns we are
+ processing. */
+ if (INSN_CUID (reg_last_set[regno]) <= INSN_CUID (subst_insn))
+ return 0;
+
/* We can not do anything useful in this case, because there is
an instruction which is not on the insn chain. */
if (subst_prev_insn)