参照元

説明

引数

返り値

参考

実装

/* Print the gimple statement GS on the pretty printer BUFFER, SPC
   spaces of indent.  FLAGS specifies details to show in the dump (see
   TDF_* in dumpfile.h).  The caller is responsible for calling
   pp_flush on BUFFER to finalize the pretty printer.  */

void
pp_gimple_stmt_1 (pretty_printer *buffer, gimple *gs, int spc,
		  dump_flags_t flags)
{
  if (!gs)
    return;

  if (flags & TDF_STMTADDR)
    pp_printf (buffer, "<&%p> ", (void *) gs);
  if ((flags & TDF_LINENO) && gimple_has_location (gs))
    dump_location (buffer, gimple_location (gs));
  if (flags & TDF_EH)
    {
      int lp_nr = lookup_stmt_eh_lp (gs);
      if (lp_nr > 0)
	pp_printf (buffer, "[LP %d] ", lp_nr);
      else if (lp_nr < 0)
	pp_printf (buffer, "[MNT %d] ", -lp_nr);
    }
  if ((flags & (TDF_VOPS|TDF_MEMSYMS))
      && gimple_has_mem_ops (gs))
    dump_gimple_mem_ops (buffer, gs, spc, flags);
  if (gimple_has_lhs (gs)
      && (flags & TDF_ALIAS))
    dump_ssaname_info (buffer, gimple_get_lhs (gs), spc);
  switch (gimple_code (gs))
    {
    case GIMPLE_ASM:
      dump_gimple_asm (buffer, as_a <gasm *> (gs), spc, flags);
      break;
    case GIMPLE_ASSIGN:
      dump_gimple_assign (buffer, as_a <gassign *> (gs), spc, flags);
      break;
    case GIMPLE_BIND:
      dump_gimple_bind (buffer, as_a <gbind *> (gs), spc, flags);
      break;
    case GIMPLE_CALL:
      dump_gimple_call (buffer, as_a <gcall *> (gs), spc, flags);
      break;
    case GIMPLE_COND:
      dump_gimple_cond (buffer, as_a <gcond *> (gs), spc, flags);
      break;
    case GIMPLE_LABEL:
      dump_gimple_label (buffer, as_a <glabel *> (gs), spc, flags);
      break;
    case GIMPLE_GOTO:
      dump_gimple_goto (buffer, as_a <ggoto *> (gs), spc, flags);
      break;
    case GIMPLE_NOP:
      pp_string (buffer, "GIMPLE_NOP");
      break;

    case GIMPLE_RETURN:
      dump_gimple_return (buffer, as_a <greturn *> (gs), spc, flags);
      break;
    case GIMPLE_SWITCH:
      dump_gimple_switch (buffer, as_a <gswitch *> (gs), spc, flags);
      break;
    case GIMPLE_TRY:
      dump_gimple_try (buffer, as_a <gtry *> (gs), spc, flags);
      break;
    case GIMPLE_PHI:
      dump_gimple_phi (buffer, as_a <gphi *> (gs), spc, false, flags);
      break;
    case GIMPLE_OMP_PARALLEL:
      dump_gimple_omp_parallel (buffer, as_a <gomp_parallel *> (gs), spc,
				flags);
      break;
    case GIMPLE_OMP_TASK:
      dump_gimple_omp_task (buffer, as_a <gomp_task *> (gs), spc, flags);
      break;
    case GIMPLE_OMP_ATOMIC_LOAD:
      dump_gimple_omp_atomic_load (buffer, as_a <gomp_atomic_load *> (gs),
				   spc, flags);
      break;
    case GIMPLE_OMP_ATOMIC_STORE:
      dump_gimple_omp_atomic_store (buffer,
				    as_a <gomp_atomic_store *> (gs),
				    spc, flags);
      break;
    case GIMPLE_OMP_FOR:
      dump_gimple_omp_for (buffer, as_a <gomp_for *> (gs), spc, flags);
      break;
    case GIMPLE_OMP_CONTINUE:
      dump_gimple_omp_continue (buffer, as_a <gomp_continue *> (gs), spc,
				flags);
      break;
    case GIMPLE_OMP_SINGLE:
      dump_gimple_omp_single (buffer, as_a <gomp_single *> (gs), spc,
			      flags);
      break;
    case GIMPLE_OMP_TARGET:
      dump_gimple_omp_target (buffer, as_a <gomp_target *> (gs), spc,
			      flags);
      break;
    case GIMPLE_OMP_TEAMS:
      dump_gimple_omp_teams (buffer, as_a <gomp_teams *> (gs), spc,
			     flags);
      break;
    case GIMPLE_OMP_RETURN:
      dump_gimple_omp_return (buffer, gs, spc, flags);
      break;
    case GIMPLE_OMP_SECTIONS:
      dump_gimple_omp_sections (buffer, as_a <gomp_sections *> (gs),
				spc, flags);
      break;
    case GIMPLE_OMP_SECTIONS_SWITCH:
      pp_string (buffer, "GIMPLE_SECTIONS_SWITCH");
      break;

    case GIMPLE_OMP_MASTER:
    case GIMPLE_OMP_TASKGROUP:
    case GIMPLE_OMP_SECTION:
    case GIMPLE_OMP_GRID_BODY:
      dump_gimple_omp_block (buffer, gs, spc, flags);
      break;
    case GIMPLE_OMP_ORDERED:
      dump_gimple_omp_ordered (buffer, as_a <gomp_ordered *> (gs), spc,
			       flags);
      break;
    case GIMPLE_OMP_CRITICAL:
      dump_gimple_omp_critical (buffer, as_a <gomp_critical *> (gs), spc,
				flags);
      break;
    case GIMPLE_CATCH:
      dump_gimple_catch (buffer, as_a <gcatch *> (gs), spc, flags);
      break;
    case GIMPLE_EH_FILTER:
      dump_gimple_eh_filter (buffer, as_a <geh_filter *> (gs), spc, flags);
      break;
    case GIMPLE_EH_MUST_NOT_THROW:
      dump_gimple_eh_must_not_throw (buffer,
				     as_a <geh_mnt *> (gs),
				     spc, flags);
      break;
    case GIMPLE_EH_ELSE:
      dump_gimple_eh_else (buffer, as_a <geh_else *> (gs), spc, flags);
      break;
    case GIMPLE_RESX:
      dump_gimple_resx (buffer, as_a <gresx *> (gs), spc, flags);
      break;
    case GIMPLE_EH_DISPATCH:
      dump_gimple_eh_dispatch (buffer, as_a <geh_dispatch *> (gs), spc,
			       flags);
      break;
    case GIMPLE_DEBUG:
      dump_gimple_debug (buffer, as_a <gdebug *> (gs), spc, flags);
      break;
    case GIMPLE_PREDICT:
      pp_string (buffer, "// predicted ");
      if (gimple_predict_outcome (gs))
	pp_string (buffer, "likely by ");
      else
	pp_string (buffer, "unlikely by ");
      pp_string (buffer, predictor_name (gimple_predict_predictor (gs)));
      pp_string (buffer, " predictor.");
      break;
    case GIMPLE_TRANSACTION:
      dump_gimple_transaction (buffer, as_a <gtransaction *> (gs), spc,
			       flags);
      break;
    default:
      GIMPLE_NIY;
    }
}

コメント


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-03-22 (月) 16:40:18