diff options
author | Bernd Schmidt <bernds@cygnus.co.uk> | 1999-08-27 09:39:14 +0000 |
---|---|---|
committer | Bernd Schmidt <crux@gcc.gnu.org> | 1999-08-27 09:39:14 +0000 |
commit | 6c1b3bf290b57d8adb19bda3ae15368a4a402a01 (patch) | |
tree | d990e8b1d637e4db51f9f8488d7b3a0e29227fea | |
parent | 7cfc8a78302146d7c2a27ab6fe838c47c8d33f9b (diff) | |
download | gcc-6c1b3bf290b57d8adb19bda3ae15368a4a402a01.zip gcc-6c1b3bf290b57d8adb19bda3ae15368a4a402a01.tar.gz gcc-6c1b3bf290b57d8adb19bda3ae15368a4a402a01.tar.bz2 |
Fix for 'Deadly optimization bug' (see egcs mailing list archive)
From-SVN: r28928
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/combine.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2085fc8..6e6ffd4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Aug 27 10:33:35 1999 Bernd Schmidt <bernds@cygnus.co.uk> + + * 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 <nathan@acm.org> * configure.in: Don't use shell ! to negate exit codes 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) |