GIMPLE

で、ちょっと息抜きにtree-ssaについて調べてみた。息抜きのつもりが、読んでたら寝てしまったわけだが。


まあ、そんな話はいいか。とにかく、最適化のことはよくわからんのだけど、フロントエンドのAPIが変わっちゃうんじゃないかなー。とそういう感じで調べてたわけだ。
で、結論としては、やっぱ、若干変わってるなぁ…と。けど、思っていたほど変わっているわけではない。多分。


http://gcc.gnu.org/onlinedocs/gccint/Tree-SSA.html#Tree-SSA
これまでは、インライン展開なんかの高レベルな最適化っていうのが、tree_rest_of_compilationからのフック呼びまくりで行われてたんだけど、そいつはどうかと思うので、RTLに変換する前にRTLよりももうちょい抽象的な3番地文で構成されたGIMPLEっていうので、そこらへんの最適化をやっちゃおうか。っていうような話らしい。多分。(ただ、僕の英語力はまるであてにならないので、あんまり信用しないほうがいいかと。)
と、いうことは、tree-ssaと名乗ってはいるけど、SSAになるだけじゃなくて、もうちょい色々効果があるんじゃないだろうか、などと思ってみる。
で、フロントエンドから見たインターフェースなんだけど、これからは、RTL変換だけじゃなくて、3番地文への変換が必要になってくるので、フロントエンドが背負う仕事量が増えるんじゃないかと思うんだけど、Cフロントエンドのコード量は結構な量減ってんだよなぁ…これは、フロントエンドレベルでの最適化のうちのいくつかがGIMPLE最適化のフェーズに押し込まれた結果だと見ていいんだろうか。そんな感じはしないんだけどなぁ…謎。