「SSA形式と等価な型システムによるコンパイラ最適化の実装」(松野裕)

コードをコンパイルするとき、実行ファイルを効率化して実行時間などを最小化するコンパイラ最適化にはいくつもの方法がありますが、今回はSSA形式の話です。SSA ではまずファイルを各変数への代入が一箇所だけで行われる形に変換し、最適化(余計なコードの除去とか)をし、そして逆変換をして実行ファイル形式に戻します。しかし、この逆変換が難しいものだそうで、逆変換をせずにSSAの利点を使えないか。今回は、SSAの情報をそのまま持つような型システムを構成し、コードの各行に新たに型情報を付加します。SSAのように(非可逆な)書き換えをしないので安心だし、逆変換も必要がない。
ちなみに、この型システムでは、ある行の型は、その行を含むSSA変換でのフローチャートを樹に書き直したような形(うまい説明ができず申し訳ありませんが)をしています。納得する(だけど大きなプログラムだったらとても複雑になりそうな)形でした。というわけでアイディアとしては面白そうでしたが、実装面ではまだ試験段階のようです。