参照元

説明

引数

返り値

参考

実装

/* 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));
  switch (format_ptr[idx])
    {
      const char *str;

    case 'T':
      str = XTMPL (in_rtx, idx);
      goto string;
    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;
    case '0':
      print_rtx_operand_code_0 (in_rtx, idx);
      break;
    case 'e':
      print_rtx_operand_code_e (in_rtx, idx);
      break;
    case 'E':
    case 'V':
      print_rtx_operand_codes_E_and_V (in_rtx, idx);
      break;
    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;
    case 'i':
      print_rtx_operand_code_i (in_rtx, idx);
      break;
    case 'p':
      fprintf (m_outfile, " ");
      print_poly_int (m_outfile, SUBREG_BYTE (in_rtx));
      break;
    case 'r':
      print_rtx_operand_code_r (in_rtx);
      break;
    /* 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;
    case 'u':
      print_rtx_operand_code_u (in_rtx, idx);
      break;
    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;
    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;
    default:
      gcc_unreachable ();
    }
}

コメント


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS