参照元†
返り値†
/* Apply alter_subreg for subregs of regs in *LOC. Use FINAL_P for
alter_subreg calls. Return true if any subreg of reg is
processed. */
static bool
alter_subregs (rtx *loc, bool final_p)
{
int i;
rtx x = *loc;
bool res;
const char *fmt;
enum rtx_code code;
if (x == NULL_RTX)
return false;
code = GET_CODE (x);
if (code == SUBREG && REG_P (SUBREG_REG (x)))
{
lra_assert (REGNO (SUBREG_REG (x)) < FIRST_PSEUDO_REGISTER);
alter_subreg (loc, final_p);
return true;
}
fmt = GET_RTX_FORMAT (code);
res = false;
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
{
if (fmt[i] == 'e')
{
if (alter_subregs (&XEXP (x, i), final_p))
res = true;
}
else if (fmt[i] == 'E')
{
int j;
for (j = XVECLEN (x, i) - 1; j >= 0; j--)
if (alter_subregs (&XVECEXP (x, i, j), final_p))
res = true;
}
}
return res;
}
コメント†