aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-05-05 15:59:06 +0000
committerRichard Stallman <rms@gnu.org>1992-05-05 15:59:06 +0000
commitaaf9712e79c6bdfcdb337d621e80e517aebd955b (patch)
treeb4c27be8e60dcd930b16f781410142baa7ecf8ce /gcc
parent695dac07e97af3290c3b5bb8e2496177e81929dc (diff)
downloadgcc-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.c20
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