gcc-8.3/gcc/rtx_writer/print_rtx_operand()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#c2ffbf82]
#backlinks
*説明 [#u91ac480]
-パス: [[gcc-8.3/gcc/print-rtl.c]]
-FIXME: これは何?
--説明
**引数 [#j9fe2d3a]
-const_rtx in_rtx
--
--[[gcc-8.3/gcc/const_rtx]]
-int idx
--
**返り値 [#acb9f51f]
-なし
**参考 [#f0ef1a4f]
*実装 [#od1915fd]
/* Subroutine of print_rtx. Print operand IDX of IN_RT...
void
rtx_writer::print_rtx_operand (const_rtx in_rtx, int idx)
{
const char *format_ptr = GET_RTX_FORMAT (GET_CODE (in_...
-format は uuBni のように、引数の数だけアルファベットが並...
--[[gcc-8.3/gcc/GET_CODE()]]
--[[gcc-8.3/gcc/GET_RTX_FORMAT()]]
switch (format_ptr[idx])
{
const char *str;
case 'T':
str = XTMPL (in_rtx, idx);
goto string;
-
--[[gcc-8.3/gcc/XTMPL()]]
case 'S':
case 's':
str = XSTR (in_rtx, idx);
string:
if (str == 0)
fputs (" (nil)", m_outfile);
else
fprintf (m_outfile, " (\"%s\")", str);
m_sawclose = 1;
break;
-
--[[gcc-8.3/gcc/XSTR()]]
case '0':
print_rtx_operand_code_0 (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_0()]]
case 'e':
print_rtx_operand_code_e (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_e()]]
case 'E':
case 'V':
print_rtx_operand_codes_E_and_V (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_codes_E_and_...
case 'w':
if (! m_simple)
fprintf (m_outfile, " ");
fprintf (m_outfile, HOST_WIDE_INT_PRINT_DEC, XWINT...
if (! m_simple && !m_compact)
fprintf (m_outfile, " [" HOST_WIDE_INT_PRINT_HEX "]",
(unsigned HOST_WIDE_INT) XWINT (in_rtx, idx));
break;
-
--[[gcc-8.3/gcc/XWINT()]]
--[[gcc-8.3/gcc/HOST_WIDE_INT_PRINT_DEC]]
--[[gcc-8.3/gcc/HOST_WIDE_INT_PRINT_HEX]]
--[[gcc-8.3/gcc/HOST_WIDE_INT]]
case 'i':
print_rtx_operand_code_i (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_i()]]
case 'p':
fprintf (m_outfile, " ");
print_poly_int (m_outfile, SUBREG_BYTE (in_rtx));
break;
-
--[[gcc-8.3/gcc/print_poly_int()]]
--[[gcc-8.3/gcc/SUBREG_BYTE()]]
case 'r':
print_rtx_operand_code_r (in_rtx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_r()]]
/* Print NOTE_INSN names rather than integer codes. ...
case 'n':
fprintf (m_outfile, " %s", GET_NOTE_INSN_NAME (XIN...
m_sawclose = 0;
break;
-
--[[gcc-8.3/gcc/XINT()]]
--[[gcc-8.3/gcc/GET_NOTE_INSN_NAME()]]
case 'u':
print_rtx_operand_code_u (in_rtx, idx);
break;
-in_rtx.code が LABEL_REF でなければ、UID を表示するだけ。
-LABEL_REF のときはやや複雑そう。
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_u()]]
case 't':
#ifndef GENERATOR_FILE
if (idx == 0 && GET_CODE (in_rtx) == DEBUG_IMPLICI...
print_mem_expr (m_outfile, DEBUG_IMPLICIT_PTR_DECL (in_...
else if (idx == 0 && GET_CODE (in_rtx) == DEBUG_PA...
print_mem_expr (m_outfile, DEBUG_PARAMETER_REF_DECL (in...
else
dump_addr (m_outfile, " ", XTREE (in_rtx, idx));
#endif
break;
-
--[[gcc-8.3/gcc/GET_CODE()]]
--[[gcc-8.3/gcc/DEBUG_IMPLICIT_PTR_DECL()]]
--[[gcc-8.3/gcc/DEBUG_IMPLICIT_REF_DECL()]]
--[[gcc-8.3/gcc/print_mem_expr()]]
--[[gcc-8.3/gcc/dump_addr()]]
--[[gcc-8.3/gcc/XTREE()]]
case '*':
fputs (" Unknown", m_outfile);
m_sawclose = 0;
break;
case 'B':
/* Don't print basic block ids in compact mode. */
if (m_compact)
break;
#ifndef GENERATOR_FILE
if (XBBDEF (in_rtx, idx))
fprintf (m_outfile, " %i", XBBDEF (in_rtx, idx)->index);
#endif
break;
-
--XBBDEF() は basic_block 型を返す。
--[[gcc-8.3/gcc/XBBDEF()]]
--[[gcc-8.3/gcc/basic_block]]
default:
gcc_unreachable ();
}
-
--[[gcc-8.3/gcc/gcc_unreachable()]]
}
*コメント [#m462a97a]
終了行:
*参照元 [#c2ffbf82]
#backlinks
*説明 [#u91ac480]
-パス: [[gcc-8.3/gcc/print-rtl.c]]
-FIXME: これは何?
--説明
**引数 [#j9fe2d3a]
-const_rtx in_rtx
--
--[[gcc-8.3/gcc/const_rtx]]
-int idx
--
**返り値 [#acb9f51f]
-なし
**参考 [#f0ef1a4f]
*実装 [#od1915fd]
/* Subroutine of print_rtx. Print operand IDX of IN_RT...
void
rtx_writer::print_rtx_operand (const_rtx in_rtx, int idx)
{
const char *format_ptr = GET_RTX_FORMAT (GET_CODE (in_...
-format は uuBni のように、引数の数だけアルファベットが並...
--[[gcc-8.3/gcc/GET_CODE()]]
--[[gcc-8.3/gcc/GET_RTX_FORMAT()]]
switch (format_ptr[idx])
{
const char *str;
case 'T':
str = XTMPL (in_rtx, idx);
goto string;
-
--[[gcc-8.3/gcc/XTMPL()]]
case 'S':
case 's':
str = XSTR (in_rtx, idx);
string:
if (str == 0)
fputs (" (nil)", m_outfile);
else
fprintf (m_outfile, " (\"%s\")", str);
m_sawclose = 1;
break;
-
--[[gcc-8.3/gcc/XSTR()]]
case '0':
print_rtx_operand_code_0 (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_0()]]
case 'e':
print_rtx_operand_code_e (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_e()]]
case 'E':
case 'V':
print_rtx_operand_codes_E_and_V (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_codes_E_and_...
case 'w':
if (! m_simple)
fprintf (m_outfile, " ");
fprintf (m_outfile, HOST_WIDE_INT_PRINT_DEC, XWINT...
if (! m_simple && !m_compact)
fprintf (m_outfile, " [" HOST_WIDE_INT_PRINT_HEX "]",
(unsigned HOST_WIDE_INT) XWINT (in_rtx, idx));
break;
-
--[[gcc-8.3/gcc/XWINT()]]
--[[gcc-8.3/gcc/HOST_WIDE_INT_PRINT_DEC]]
--[[gcc-8.3/gcc/HOST_WIDE_INT_PRINT_HEX]]
--[[gcc-8.3/gcc/HOST_WIDE_INT]]
case 'i':
print_rtx_operand_code_i (in_rtx, idx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_i()]]
case 'p':
fprintf (m_outfile, " ");
print_poly_int (m_outfile, SUBREG_BYTE (in_rtx));
break;
-
--[[gcc-8.3/gcc/print_poly_int()]]
--[[gcc-8.3/gcc/SUBREG_BYTE()]]
case 'r':
print_rtx_operand_code_r (in_rtx);
break;
-
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_r()]]
/* Print NOTE_INSN names rather than integer codes. ...
case 'n':
fprintf (m_outfile, " %s", GET_NOTE_INSN_NAME (XIN...
m_sawclose = 0;
break;
-
--[[gcc-8.3/gcc/XINT()]]
--[[gcc-8.3/gcc/GET_NOTE_INSN_NAME()]]
case 'u':
print_rtx_operand_code_u (in_rtx, idx);
break;
-in_rtx.code が LABEL_REF でなければ、UID を表示するだけ。
-LABEL_REF のときはやや複雑そう。
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_u()]]
case 't':
#ifndef GENERATOR_FILE
if (idx == 0 && GET_CODE (in_rtx) == DEBUG_IMPLICI...
print_mem_expr (m_outfile, DEBUG_IMPLICIT_PTR_DECL (in_...
else if (idx == 0 && GET_CODE (in_rtx) == DEBUG_PA...
print_mem_expr (m_outfile, DEBUG_PARAMETER_REF_DECL (in...
else
dump_addr (m_outfile, " ", XTREE (in_rtx, idx));
#endif
break;
-
--[[gcc-8.3/gcc/GET_CODE()]]
--[[gcc-8.3/gcc/DEBUG_IMPLICIT_PTR_DECL()]]
--[[gcc-8.3/gcc/DEBUG_IMPLICIT_REF_DECL()]]
--[[gcc-8.3/gcc/print_mem_expr()]]
--[[gcc-8.3/gcc/dump_addr()]]
--[[gcc-8.3/gcc/XTREE()]]
case '*':
fputs (" Unknown", m_outfile);
m_sawclose = 0;
break;
case 'B':
/* Don't print basic block ids in compact mode. */
if (m_compact)
break;
#ifndef GENERATOR_FILE
if (XBBDEF (in_rtx, idx))
fprintf (m_outfile, " %i", XBBDEF (in_rtx, idx)->index);
#endif
break;
-
--XBBDEF() は basic_block 型を返す。
--[[gcc-8.3/gcc/XBBDEF()]]
--[[gcc-8.3/gcc/basic_block]]
default:
gcc_unreachable ();
}
-
--[[gcc-8.3/gcc/gcc_unreachable()]]
}
*コメント [#m462a97a]
ページ名: