From 6c1b3bf290b57d8adb19bda3ae15368a4a402a01 Mon Sep 17 00:00:00 2001 From: Bernd Schmidt Date: Fri, 27 Aug 1999 09:39:14 +0000 Subject: [PATCH] Fix for 'Deadly optimization bug' (see egcs mailing list archive) From-SVN: r28928 --- gcc/ChangeLog | 5 +++++ gcc/combine.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2085fc8caac..6e6ffd4c575 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Aug 27 10:33:35 1999 Bernd Schmidt + + * combine.c (get_last_value): Don't look for earlier sets if the last + known set is somewhere in between the insns being combined. + Fri Aug 27 10:03:12 BST 1999 Nathan Sidwell * configure.in: Don't use shell ! to negate exit codes diff --git a/gcc/combine.c b/gcc/combine.c index dcd60c2cec4..9bedd6118f9 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) -- 2.30.2