*参照元 [#vda1b7b2]
#backlinks

*説明 [#a061f843]
-パス: [[gcc-8.3/gcc/rtl.h]]

-FIXME: これは何?
--N 番目のオペランド(u.fld[N])を返す。
--引数 N が範囲内に収まっているかチェックする
--RTX の N 番目のオペランドの型が引数 C1 または C2 と一致するかチェックする


**引数 [#t6512b9e]
-RTX
--
--[[gcc-8.3/gcc/rtx]]
-int N
--何番目のオペランドを返すか
-char C1
--オペランドの型
-char C2
--オペランドの型


**返り値 [#c6a6a003]
-rtunion
--rtx_def の u.fld[] の型と同じ
--rtx の u.fld[] の型と同じ
--[[gcc-8.3/gcc/rtunion]]
--[[gcc-8.3/gcc/rtx_def]]


**参考 [#cd0243af]


*実装 [#kff6070f]
 #if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007)
 
 #define RTL_CHECK2(RTX, N, C1, C2) __extension__			\
 (*({ __typeof (RTX) const _rtx = (RTX); const int _n = (N);		\
      const enum rtx_code _code = GET_CODE (_rtx);			\
      if (_n < 0 || _n >= GET_RTX_LENGTH (_code))			\
        rtl_check_failed_bounds (_rtx, _n, __FILE__, __LINE__,		\
 				__FUNCTION__);				\
      if (GET_RTX_FORMAT (_code)[_n] != C1				\
 	 && GET_RTX_FORMAT (_code)[_n] != C2)				\
        rtl_check_failed_type2 (_rtx, _n, C1, C2, __FILE__, __LINE__,	\
 			       __FUNCTION__);				\
      &_rtx->u.fld[_n]; }))
 
-
--[[gcc-8.3/gcc/rtx_code]]
--[[gcc-8.3/gcc/GET_CODE()]]
--[[gcc-8.3/gcc/GET_RTX_LENGTH()]]
--[[gcc-8.3/gcc/rtl_check_failed_bounds()]]
--[[gcc-8.3/gcc/GET_RTX_FORMAT()]]
--[[gcc-8.3/gcc/rtl_check_failed_type2()]]

 #else   /* not ENABLE_RTL_CHECKING */
 
 #define RTL_CHECK2(RTX, N, C1, C2)  ((RTX)->u.fld[N])
 
 #endif


*コメント [#rb023b87]

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