*参照元 [#g7ee039b]
#backlinks

*説明 [#d458c05d]
-パス: [[gcc-8.3/gcc/gengenrtl.c]]
--[[gcc-8.3/gcc/gengtype.c]]
--[[gcc-8.3/gcc/genopinit.c]]
--[[gcc-8.3/gcc/genrecog.c]]
--[[gcc-8.3/gcc/rtl.c]]
--[[gcc-8.3/gcc/rtl.h]]


-FIXME: これは何?
--このマクロを define, include "rtl.def", マクロを undef をセットにして使う。

例

 enum rtx_code
 {
 #define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS) ENUM ,
 #include "rtl.def"
 #undef DEF_RTL_EXPR
   NUM_RTX_CODE
 };

rtl.def には下記のように DEF_RTL_EXPR を使った定義が羅列されていて、

 /* Unknown, or no such operation; the enumeration constant should have
    value zero.  */
 DEF_RTL_EXPR(UNKNOWN, "UnKnown", "*", RTX_EXTRA)
 
 /* Used in the cselib routines to describe a value.  Objects of this
    kind are only allocated in cselib.c, in an alloc pool instead of in
    GC memory.  The only operand of a VALUE is a cselib_val.
    var-tracking requires this to have a distinct integral value from
    DECL codes in trees.  */
 DEF_RTL_EXPR(VALUE, "value", "0", RTX_OBJ)
 
 /* The RTL generated for a DEBUG_EXPR_DECL.  It links back to the
    DEBUG_EXPR_DECL in the first operand.  */
 DEF_RTL_EXPR(DEBUG_EXPR, "debug_expr", "0", RTX_OBJ)

ENUM のみを残すマクロを定義してから、

 #define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS) ENUM ,

include "rtl.def" することで、NAME, FORMAT, CLASS の情報は消えて、ENUM のみが並ぶ。


**引数 [#jbe12db6]
-
-ENUM
--
-NAME
--
-FORMAT
--
-CLASS
--


**返り値 [#q4fa68e4]
-
--


**参考 [#a1e2b1bc]


*実装 [#w6a30d88]


*コメント [#r52b8f4f]

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