局所的最適化
基本ブロック
内での
コード最適化
共通部分式の削除
定数畳み込み
コピー伝搬
DAGを用いた最適化
命令強度の削減
定数伝搬
代数的性質(恒等式)の利用
演算子が満たす等式を利用して、計算式を簡単化する
交換則、結合則、分配則などの利用
code:example
a+0 → a
b*1 → b
1+(c+2) → 3+c
d*(1+e/d) → d+e
C言語のポインタ演算子
*
と
&
の等価交換
code:example
*&a → a
疑問
なんで
*
より
+
のほうが効率がいいのか
参考
『コンパイラの理論と作成技法』
『コンパイラとバーチャルマシン』