gcc-8.3/gcc/gen_rtx_REG()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#m871886a]
#backlinks
*説明 [#k8146ef3]
-パス: [[gcc-8.3/gcc/emit-rtl.c]]
-FIXME: これは何?
--説明
**引数 [#m5bbb731]
-machine_mode mode
--
--[[gcc-8.3/gcc/machine_mode]]
-unsigned int regno
--
**返り値 [#d0b68e9a]
-rtx
--
--[[gcc-8.3/gcc/rtx]]
**参考 [#na6c37d3]
*実装 [#d1e3f976]
rtx
gen_rtx_REG (machine_mode mode, unsigned int regno)
{
/* In case the MD file explicitly references the frame...
all such references point to the same frame pointer...
used during frame pointer elimination to distinguis...
references to these registers from pseudos that hap...
assigned to them.
If we have eliminated the frame pointer or arg poin...
be using it as a normal register, for example as a ...
register. In such cases, we might be accessing it ...
is not Pmode and therefore cannot use the pre-alloc...
Also don't do this when we are making new REGs in r...
we don't want to get confused with the real pointer...
if (mode == Pmode && !reload_in_progress && !lra_in_pr...
{
if (regno == FRAME_POINTER_REGNUM
&& (!reload_completed || frame_pointer_needed))
return frame_pointer_rtx;
if (!HARD_FRAME_POINTER_IS_FRAME_POINTER
&& regno == HARD_FRAME_POINTER_REGNUM
&& (!reload_completed || frame_pointer_needed))
return hard_frame_pointer_rtx;
#if !HARD_FRAME_POINTER_IS_ARG_POINTER
if (FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
&& regno == ARG_POINTER_REGNUM)
return arg_pointer_rtx;
#endif
#ifdef RETURN_ADDRESS_POINTER_REGNUM
if (regno == RETURN_ADDRESS_POINTER_REGNUM)
return return_address_pointer_rtx;
#endif
if (regno == (unsigned) PIC_OFFSET_TABLE_REGNUM
&& PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM
&& fixed_regs[PIC_OFFSET_TABLE_REGNUM])
return pic_offset_table_rtx;
if (regno == STACK_POINTER_REGNUM)
return stack_pointer_rtx;
}
-
--[[gcc-8.3/gcc/fixed_regs(global)]]
#if 0
/* If the per-function register table has been set up,...
an existing entry in that table to avoid useless ge...
This code is disabled for now until we can fix the ...
which depend on having non-shared hard registers in...
term we want to re-enable this code as it can signi...
on the amount of useless RTL that gets generated.
We'll also need to fix some code that runs after re...
set ORIGINAL_REGNO. */
if (cfun
&& cfun->emit
&& regno_reg_rtx
&& regno < FIRST_PSEUDO_REGISTER
&& reg_raw_mode[regno] == mode)
return regno_reg_rtx[regno];
#endif
-
--[[gcc-8.3/gcc/reg_raw_mode(global)]]
--[[gcc-8.3/gcc/regno_reg_rtx(global)]]
return gen_raw_REG (mode, regno);
}
-
--[[gcc-8.3/gcc/gen_raw_REG()]]
*コメント [#a30b19b6]
終了行:
*参照元 [#m871886a]
#backlinks
*説明 [#k8146ef3]
-パス: [[gcc-8.3/gcc/emit-rtl.c]]
-FIXME: これは何?
--説明
**引数 [#m5bbb731]
-machine_mode mode
--
--[[gcc-8.3/gcc/machine_mode]]
-unsigned int regno
--
**返り値 [#d0b68e9a]
-rtx
--
--[[gcc-8.3/gcc/rtx]]
**参考 [#na6c37d3]
*実装 [#d1e3f976]
rtx
gen_rtx_REG (machine_mode mode, unsigned int regno)
{
/* In case the MD file explicitly references the frame...
all such references point to the same frame pointer...
used during frame pointer elimination to distinguis...
references to these registers from pseudos that hap...
assigned to them.
If we have eliminated the frame pointer or arg poin...
be using it as a normal register, for example as a ...
register. In such cases, we might be accessing it ...
is not Pmode and therefore cannot use the pre-alloc...
Also don't do this when we are making new REGs in r...
we don't want to get confused with the real pointer...
if (mode == Pmode && !reload_in_progress && !lra_in_pr...
{
if (regno == FRAME_POINTER_REGNUM
&& (!reload_completed || frame_pointer_needed))
return frame_pointer_rtx;
if (!HARD_FRAME_POINTER_IS_FRAME_POINTER
&& regno == HARD_FRAME_POINTER_REGNUM
&& (!reload_completed || frame_pointer_needed))
return hard_frame_pointer_rtx;
#if !HARD_FRAME_POINTER_IS_ARG_POINTER
if (FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
&& regno == ARG_POINTER_REGNUM)
return arg_pointer_rtx;
#endif
#ifdef RETURN_ADDRESS_POINTER_REGNUM
if (regno == RETURN_ADDRESS_POINTER_REGNUM)
return return_address_pointer_rtx;
#endif
if (regno == (unsigned) PIC_OFFSET_TABLE_REGNUM
&& PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM
&& fixed_regs[PIC_OFFSET_TABLE_REGNUM])
return pic_offset_table_rtx;
if (regno == STACK_POINTER_REGNUM)
return stack_pointer_rtx;
}
-
--[[gcc-8.3/gcc/fixed_regs(global)]]
#if 0
/* If the per-function register table has been set up,...
an existing entry in that table to avoid useless ge...
This code is disabled for now until we can fix the ...
which depend on having non-shared hard registers in...
term we want to re-enable this code as it can signi...
on the amount of useless RTL that gets generated.
We'll also need to fix some code that runs after re...
set ORIGINAL_REGNO. */
if (cfun
&& cfun->emit
&& regno_reg_rtx
&& regno < FIRST_PSEUDO_REGISTER
&& reg_raw_mode[regno] == mode)
return regno_reg_rtx[regno];
#endif
-
--[[gcc-8.3/gcc/reg_raw_mode(global)]]
--[[gcc-8.3/gcc/regno_reg_rtx(global)]]
return gen_raw_REG (mode, regno);
}
-
--[[gcc-8.3/gcc/gen_raw_REG()]]
*コメント [#a30b19b6]
ページ名: