diff options
author | Jim Wilson <wilson@cygnus.com> | 1997-08-27 00:49:59 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-08-26 18:49:59 -0600 |
commit | fc79eafee87732b11aaecce4b057d8ec7cd8df82 (patch) | |
tree | c1a55d5fe940646959452d8b4f78e982f92386d6 /gcc | |
parent | c5da853fcd93707cd7ef1543bcbace7d12c72f30 (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/reload.c | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 296e59e..9f556ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 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. */ |