初めに Go 1.7がリリースされる。目玉の一つは、SSA-IRが導入されたことだろう。Go1.7でSSAが入るんだけど、SSAって何?と居酒屋で聞かれたことが本稿の発端だった。私の知識だけでは包括的な説明にならなかったので、いろいろ調べつつそれをまとめた。 以下、一般的な話ではなく、なるべくGoに絞って話を進めている(コンパイラのコードはは cmd/compile/internal/gc あたりにある)。より一般的な話は、参考文献等を示したのでそちらを参考にしてほしい。いろいろ調べて、Goに追加されたSSAについて知るべきことは、SSAが何か?よりも、SSA導入したGoがどうなったか、であると思った。 SSAとは何か SSA とは Static Single Assignmentの略だ。一つの変数への代入は一度しか行われてない事が確約できる形式のコードだ。この形式のコードは、最適化が行い
![Go1.7からSSAが導入された - flyhigh](https://cdn-ak-scissors.b.st-hatena.com/image/square/0f2588baff19adc9f1acb0d3bf40d30f215a1402/height=288;version=1;width=512/https%3A%2F%2Fraw.githubusercontent.com%2Fshinpei%2Fshinpei.github.io%2Fmaster%2Fimages%2Fssa.png)