aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload.c
diff options
context:
space:
mode:
authorJim Wilson <wilson@cygnus.com>1997-08-27 00:49:59 +0000
committerJeff Law <law@gcc.gnu.org>1997-08-26 18:49:59 -0600
commitfc79eafee87732b11aaecce4b057d8ec7cd8df82 (patch)
treec1a55d5fe940646959452d8b4f78e982f92386d6 /gcc/reload.c
parentc5da853fcd93707cd7ef1543bcbace7d12c72f30 (diff)
downloadgcc-fc79eafee87732b11aaecce4b057d8ec7cd8df82.zip
gcc-fc79eafee87732b11aaecce4b057d8ec7cd8df82.tar.gz
gcc-fc79eafee87732b11aaecce4b057d8ec7cd8df82.tar.bz2
reload.c (find_reloads, case '0'): Reject matching a non-offsettable address where an offsettable address is required.
* reload.c (find_reloads, case '0'): Reject matching a non-offsettable address where an offsettable address is required. Fixes 68k bootstrap problem. From-SVN: r14948
Diffstat (limited to 'gcc/reload.c')
-rw-r--r--gcc/reload.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c
index efd4aca..c3100c5 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -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. */