*参照元 [#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_RTX.  */
 
 void
 rtx_writer::print_rtx_operand (const_rtx in_rtx, int idx)
 {
   const char *format_ptr = GET_RTX_FORMAT (GET_CODE (in_rtx));
 
-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/print_rtx_operand_code_0()]]
--[[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/print_rtx_operand_code_e()]]
--[[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/print_rtx_operand_codes_E_and_V()]]
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_codes_E_and_V()]]

     case 'w':
       if (! m_simple)
 	fprintf (m_outfile, " ");
       fprintf (m_outfile, HOST_WIDE_INT_PRINT_DEC, XWINT (in_rtx, idx));
       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/print_rtx_operand_code_i()]]
--[[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/print_rtx_operand_code_r()]]
--[[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 (XINT (in_rtx, idx)));
       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/print_rtx_operand_code_u()]]
--[[gcc-8.3/gcc/rtx_writer/print_rtx_operand_code_u()]]

     case 't':
 #ifndef GENERATOR_FILE
       if (idx == 0 && GET_CODE (in_rtx) == DEBUG_IMPLICIT_PTR)
 	print_mem_expr (m_outfile, DEBUG_IMPLICIT_PTR_DECL (in_rtx));
       else if (idx == 0 && GET_CODE (in_rtx) == DEBUG_PARAMETER_REF)
 	print_mem_expr (m_outfile, DEBUG_PARAMETER_REF_DECL (in_rtx));
       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]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS