generated at
ループ不変式の移動

loop-invariant code motion
ループの各繰り返しで不変な計算をループの外へくくり出す
使用定義連鎖を用いる
不変式を全て外に出すことができるわけではない

意外と考えることが多そうなので、ちゃんと勉強するときは『コンパイラとバーチャルマシン』 p.101~を読み直すmrsekut

c
i=1; do{ c=a/b;x=i*c;...i++; }while(i<n) ↓ i=1;t=a/b; // ループの外へくくりだした. `a/b`の計算が1回のみ行われる do{ c=t;x=i*c;,...i++; }while(i<n); ↓ i=1;c=a/b; // 一時変数tの導入は不要なので、さらに最適化できた do{ x=i*c;,...i++; }while(i<n);


参考
アルゴリズムなど