reload.c (find_reloads): Use a hard reg destination as reload reg for an input reload of the source.

* reload.c (find_reloads): Use a hard reg destination as reload reg
        for an input reload of the source.

From-SVN: r48822
This commit is contained in:
Richard Henderson 2002-01-13 14:57:29 -08:00 committed by Richard Henderson
parent 332a685b95
commit 02a10130ff
2 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2002-01-13 Richard Henderson <rth@redhat.com>
* reload.c (find_reloads): Use a hard reg destination as reload reg
for an input reload of the source.
2002-01-13 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> 2002-01-13 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi (Binaries): Make link to ftp.writtenword.com * doc/install.texi (Binaries): Make link to ftp.writtenword.com

View File

@ -4241,6 +4241,23 @@ find_reloads (insn, replace, ind_levels, live_known, reload_reg_p)
rld[i].nregs = CLASS_MAX_NREGS (rld[i].class, rld[i].mode); rld[i].nregs = CLASS_MAX_NREGS (rld[i].class, rld[i].mode);
} }
/* Special case a simple move with an input reload and a
destination of a hard reg, if the hard reg is ok, use it. */
for (i = 0; i < n_reloads; i++)
if (rld[i].when_needed == RELOAD_FOR_INPUT
&& GET_CODE (PATTERN (insn)) == SET
&& GET_CODE (SET_DEST (PATTERN (insn))) == REG
&& SET_SRC (PATTERN (insn)) == rld[i].in)
{
rtx dest = SET_DEST (PATTERN (insn));
unsigned int regno = REGNO (dest);
if (regno < FIRST_PSEUDO_REGISTER
&& TEST_HARD_REG_BIT (reg_class_contents[rld[i].class], regno)
&& HARD_REGNO_MODE_OK (regno, rld[i].mode))
rld[i].reg_rtx = dest;
}
return retval; return retval;
} }