aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.com>2001-03-01 13:35:13 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2001-03-01 13:35:13 +0000
commit1abdf5e7476e4390edf3556d43a5601870cd3418 (patch)
treeafb09d973d05147c11f6bcb3ce6acac977769bc5 /gcc
parent21e4c9a8db052486c9baf381279d1725048a56f0 (diff)
downloadgcc-1abdf5e7476e4390edf3556d43a5601870cd3418.zip
gcc-1abdf5e7476e4390edf3556d43a5601870cd3418.tar.gz
gcc-1abdf5e7476e4390edf3556d43a5601870cd3418.tar.bz2
Fix register elimination problem
From-SVN: r40147
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/reload1.c1
2 files changed, 4 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 40a88ef..879827b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
2001-03-01 Bernd Schmidt <bernds@redhat.com>
+ * reload1.c (eliminate_regs_in_insn): Restrict the special case
+ code not to try to optimize adds with anything but a REG destination.
+
* sched-int.h (struct haifa_insn_data): Add new member priority_known.
(INSN_PRIORITY_KNOWN): New accessor macro.
* haifa-sched.c (priority): Use it instead of testing priority against
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 13d609e..077c410 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -3016,6 +3016,7 @@ eliminate_regs_in_insn (insn, replace)
currently support: a single set with the source being a PLUS of an
eliminable register and a constant. */
if (old_set
+ && GET_CODE (SET_DEST (old_set)) == REG
&& GET_CODE (SET_SRC (old_set)) == PLUS
&& GET_CODE (XEXP (SET_SRC (old_set), 0)) == REG
&& GET_CODE (XEXP (SET_SRC (old_set), 1)) == CONST_INT