定数畳み込み
定数畳み込みと定数伝播は同時に行って、かつそれ以上変化が起きなくなるまで繰り返し実施することで、さらに効果が大きくなる。例として次のC言語コードを見てみよう。
定数伝播を一回行い、その後定数畳み込みを施すと、次のようになる。
a と b は定数に単純化され、これらを参照していた箇所は全て定数に置換された。コンパイラはここでデッドコード削除を適用し、不要なコードを削除し、コードを次のようにする。
次に、if文の条件が常に真であることが判明し、かつ c も省くことが可能であることがわかる。従って、コードは次のように削減される。
このコードが関数の定義そのものであった場合、コンパイラはさらにその知識を利用して、この関数を呼び出している箇所全てを定数 4 に置き換えて性能を向上させることが可能である。