局部优化:一个基本块(Basic Block)内的优化
1. CSE
common subexpression elimination
当一个新节点M被加入DAG时,检查是否存在N,和M具有相同的运算符和子节点。如果存在,则可以用N替换M。
a = b + c和d = b + c
直接使用a = b + c。如果d输出,则需要d = a;
2. 死代码消除
3. 代数恒等式的使用
常用来局部强度消减(reduction in strength): 代价较高的,替换为代价较低的。
如:x*2 = x + x
以及常量合并(constant folding),如2 + 2替换为4