*参照元 [#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]