diff options
author | Richard Stallman <rms@gnu.org> | 1992-05-05 15:59:06 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-05-05 15:59:06 +0000 |
commit | aaf9712e79c6bdfcdb337d621e80e517aebd955b (patch) | |
tree | b4c27be8e60dcd930b16f781410142baa7ecf8ce /gcc | |
parent | 695dac07e97af3290c3b5bb8e2496177e81929dc (diff) | |
download | gcc-aaf9712e79c6bdfcdb337d621e80e517aebd955b.zip gcc-aaf9712e79c6bdfcdb337d621e80e517aebd955b.tar.gz gcc-aaf9712e79c6bdfcdb337d621e80e517aebd955b.tar.bz2 |
*** empty log message ***
From-SVN: r901
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reload.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index e15a5e6..a9d82ae 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -1963,12 +1963,6 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) register RTX_CODE code = GET_CODE (recog_operand[i]); modified[i] = RELOAD_READ; address_reloaded[i] = 0; - preferred_class[i] - = ((code == REG && REGNO (recog_operand[i]) > FIRST_PSEUDO_REGISTER) - ? reg_preferred_class (REGNO (recog_operand[i])) : NO_REGS); - pref_or_nothing[i] - = (code == REG && REGNO (recog_operand[i]) > FIRST_PSEUDO_REGISTER - && reg_preferred_or_nothing (REGNO (recog_operand[i]))); if (constraints[i][0] == 'p') { @@ -2037,13 +2031,17 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p) &XEXP (recog_operand[i], 0), recog_operand[i], ind_levels); substed_operand[i] = recog_operand[i] = *recog_operand_loc[i]; - - /* This is no longer a psuedo register. To prevent later code - from thinking it still is, we must reset the preferred_class - to NO_REGS. */ - preferred_class[i] = NO_REGS; } } + /* If the operand is still a register (we didn't replace it with an + equivalent), get the preferred class to reload it into. */ + code = GET_CODE (recog_operand[i]); + preferred_class[i] + = ((code == REG && REGNO (recog_operand[i]) > FIRST_PSEUDO_REGISTER) + ? reg_preferred_class (REGNO (recog_operand[i])) : NO_REGS); + pref_or_nothing[i] + = (code == REG && REGNO (recog_operand[i]) > FIRST_PSEUDO_REGISTER + && reg_preferred_or_nothing (REGNO (recog_operand[i]))); } /* If this is simply a copy from operand 1 to operand 0, merge the |