OSDN Git Service

* reload.c (find_reloads, case '0'): Reject matching a non-offsettable
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Aug 1997 00:49:59 +0000 (00:49 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 27 Aug 1997 00:49:59 +0000 (00:49 +0000)
        address where an offsettable address is required.
Fixes 68k bootstrap problem.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14948 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reload.c

index 296e59e..9f556ba 100644 (file)
@@ -1,3 +1,8 @@
+Tue Aug 26 18:50:32 1997  Jim Wilson  <wilson@cygnus.com>
+
+       * reload.c (find_reloads, case '0'): Reject matching a non-offsettable
+       address where an offsettable address is required.
+
 Tue Aug 26 17:54:56 1997  Michael P. Hayes  (michaelh@ongaonga.chch.cri.nz>
 
        * loop.c (check_final_value): Don't miss a biv increment in a
index efd4aca..c3100c5 100644 (file)
@@ -2865,7 +2865,18 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
                        [(i == commutative || i == commutative + 1)
                         ? 2*commutative + 1 - i : i])
                    : operands_match[c][i])
-                 win = this_alternative_win[c];
+                 {
+                   /* If we are matching a non-offsettable address where an
+                      offsettable address was expected, then we must reject
+                      this combination, because we can't reload it.  */
+                   if (this_alternative_offmemok[c]
+                       && GET_CODE (recog_operand[c]) == MEM
+                       && this_alternative[c] == (int) NO_REGS
+                       && ! this_alternative_win[c])
+                     bad = 1;
+
+                   win = this_alternative_win[c];
+                 }
                else
                  {
                    /* Operands don't match.  */