*参照元 [#sd26bcc0] #backlinks *説明 [#c9f29ed3] -パス: [[gcc-8.3/gcc/final.c]] -FIXME: これは何? --説明 **引数 [#gd829251] -rtx *xp -- --[[gcc-8.3/gcc/rtx]] -bool final_p -- **返り値 [#b7fb1130] -rtx -- --[[gcc-8.3/gcc/rtx]] **参考 [#n2c56869] *実装 [#z8c4605f] /* If X is a SUBREG, try to replace it with a REG or a MEM, based on the thing it is a subreg of. Do it anyway if FINAL_P. */ rtx alter_subreg (rtx *xp, bool final_p) { rtx x = *xp; rtx y = SUBREG_REG (x); - --[[gcc-8.3/gcc/rtx]] --[[gcc-8.3/gcc/SUBREG_REG()]] /* simplify_subreg does not remove subreg from volatile references. We are required to. */ if (MEM_P (y)) { poly_int64 offset = SUBREG_BYTE (x); /* For paradoxical subregs on big-endian machines, SUBREG_BYTE contains 0 instead of the proper offset. See simplify_subreg. */ if (paradoxical_subreg_p (x)) offset = byte_lowpart_offset (GET_MODE (x), GET_MODE (y)); if (final_p) *xp = adjust_address (y, GET_MODE (x), offset); else *xp = adjust_address_nv (y, GET_MODE (x), offset); } - --[[gcc-8.3/gcc/MEM_P()]] --[[gcc-8.3/gcc/poly_int64]] --[[gcc-8.3/gcc/SUBREG_BYTE()]] --[[gcc-8.3/gcc/paradoxical_subreg_p()]] --[[gcc-8.3/gcc/byte_lowpart_offset()]] --[[gcc-8.3/gcc/GET_MODE()]] --[[gcc-8.3/gcc/adjust_address()]] --[[gcc-8.3/gcc/adjust_address_nv()]] else if (REG_P (y) && HARD_REGISTER_P (y)) { rtx new_rtx = simplify_subreg (GET_MODE (x), y, GET_MODE (y), SUBREG_BYTE (x)); if (new_rtx != 0) *xp = new_rtx; else if (final_p && REG_P (y)) { /* Simplify_subreg can't handle some REG cases, but we have to. */ unsigned int regno; poly_int64 offset; regno = subreg_regno (x); if (subreg_lowpart_p (x)) offset = byte_lowpart_offset (GET_MODE (x), GET_MODE (y)); else offset = SUBREG_BYTE (x); *xp = gen_rtx_REG_offset (y, GET_MODE (x), regno, offset); } } - --[[gcc-8.3/gcc/REG_P()]] --[[gcc-8.3/gcc/HARD_REGISTER_P()]] --[[gcc-8.3/gcc/simplify_subreg()]] --[[gcc-8.3/gcc/GET_MODE()]] --[[gcc-8.3/gcc/SUBREG_BYTE()]] --[[gcc-8.3/gcc/subreg_regno()]] --[[gcc-8.3/gcc/subreg_lowpart_p()]] --[[gcc-8.3/gcc/gen_rtx_REG_offset()]] return *xp; } *コメント [#za427664]