参照元†
FIXME: なにをするもの?
GIMPLE は GCC 内部では gimple と tree というデータ型で表現されているようだ。
gimple のおおざっぱな見方†
gimple *stmt;
print_gimple_stmt (stdout, stmt, 2);
GCC のバージョンによっては、もう一つ 0 を渡す必要があるかも。
tree のおおざっぱな見方†
tree val があったとする。
種類を見る
- val->base.code をみると、SSA_NAME のような tree_code 型の定数が入っている。
コード上で扱う際は TREE_CODE() マクロで取る。
- tree_node は色んな型の union だが、どの型も必ず先頭に tree_base 型相当のメンバを持っているので、
base.code にアクセスしても大丈夫なはず。相変わらず GCC はむちゃくちゃな作りだ。
適した型でダンプ
- code が SSA_NAME だとしたら、tree_ssa_name 型の ssa_name を見れば良い。code と名前がほぼ一致しているから、わかるはず。