gcc-8.3/gcc/alter_subreg()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#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 M...
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 volatil...
We are required to. */
if (MEM_P (y))
{
poly_int64 offset = SUBREG_BYTE (x);
/* For paradoxical subregs on big-endian machines,...
contains 0 instead of the proper offset. See simplify...
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, GE...
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 w...
unsigned int regno;
poly_int64 offset;
regno = subreg_regno (x);
if (subreg_lowpart_p (x))
offset = byte_lowpart_offset (GET_MODE (x), GET_MOD...
else
offset = SUBREG_BYTE (x);
*xp = gen_rtx_REG_offset (y, GET_MODE (x), regno, off...
}
}
-
--[[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]
終了行:
*参照元 [#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 M...
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 volatil...
We are required to. */
if (MEM_P (y))
{
poly_int64 offset = SUBREG_BYTE (x);
/* For paradoxical subregs on big-endian machines,...
contains 0 instead of the proper offset. See simplify...
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, GE...
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 w...
unsigned int regno;
poly_int64 offset;
regno = subreg_regno (x);
if (subreg_lowpart_p (x))
offset = byte_lowpart_offset (GET_MODE (x), GET_MOD...
else
offset = SUBREG_BYTE (x);
*xp = gen_rtx_REG_offset (y, GET_MODE (x), regno, off...
}
}
-
--[[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]
ページ名: