数据流分析:优化与加速策略
1. 利用数据流分析进行程序转换
优化编译器可借助数据流分析的结果,从多个方面对程序进行优化。
1.1 公共子表达式消除
对于流图语句 s : t ← x ⊕ y ,若表达式 x ⊕ y 在 s 处可用,则可消除 s 中的计算。具体算法如下:
1. 计算可达表达式,即找出形如 n : v ← x ⊕ y 的语句,且从 n 到 s 的路径不会计算 x ⊕ y 或定义 x 与 y 。
2. 选择一个新的临时变量 w ,将 n 重写为:
n : w ← x ⊕ y
n′ : v ← w
- 最后将语句
s修改为s : t ← w。后续可依靠复制传播来移除部分或全部额外的赋值四元组。
1.2 常量传播
假设存在语句 d : t ← c ( c 为常量),以及另一个使用 t 的语句 n : y ← t ⊕ x
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



