*参照元 [#vc23dc5e] #backlinks *説明 [#ec04806b] -パス: [[gcc-8.3/gcc/lra-spills.c]] -FIXME: これは何? --説明 **引数 [#t9a35109] -rtx *loc -- --[[gcc-8.3/gcc/rtx]] -bool final_p -- **返り値 [#f5d62cd8] -bool -- **参考 [#g688eb53] *実装 [#f26d827c] /* 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; - --[[gcc-8.3/gcc/rtx]] --[[gcc-8.3/gcc/rtx_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; } - --[[gcc-8.3/gcc/GET_CODE()]] --[[gcc-8.3/gcc/REG_P()]] --[[gcc-8.3/gcc/SUBREG_REG()]] --[[gcc-8.3/gcc/lra_assert()]] --[[gcc-8.3/gcc/REGNO()]] --[[gcc-8.3/gcc/alter_subreg()]] 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; } } - --[[gcc-8.3/gcc/GET_RTX_FORMAT()]] --[[gcc-8.3/gcc/GET_RTX_LENGTH()]] --[[gcc-8.3/gcc/XEXP()]] --[[gcc-8.3/gcc/XVECLEN()]] --[[gcc-8.3/gcc/XVECEXP()]] return res; } *コメント [#jd29c92c]