gcc - tree.def

GCC はすばらしい。地球が宇宙に誇れるソフトウェアだ…って前も書いたか。

ということで 3.4.0 を読み始めました。今度こそ止めない。と思ったら西田さんが解析を始められたらしい。

http://www.wnishida.com/~wmemo/?date=20040427#p04

残念ながら、私が主に興味があるのは RTL ができるまで。真逆だねえ。

さて、 tree.def が読み始めるべきところだと思う。インクルードガードも含めて一切マクロ定義が無いまま、コメントで説明がなされた後に、

DEFTREECODE (RETURN_EXPR, "return_expr", 's', 1)

なんて感じの宣言が続く。これを例えば c-lang.c では、

#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,

const char tree_code_type[] = {
#include "tree.def"
  'x',
#include "c-common.def"
};
#undef DEFTREECODE

などとして利用する。こういうのは大好きだ。

DEFTREECODE の四引数の意味は、 enum のキー、文字列、種類、引数の数。引数だけわかりにくいけど、例えば for は 4 つ。いつもの 3 つと、 4 つ目はブロックだろう。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h