它是对控制流图中数据流向的分析,即确定程序中有关数据定义和使用的信息的分析。借助此分析可以完成优化。一般而言,其使用数据流分析计算值的过程。数据流属性表示可用于优化的信息。
基本术语 –
- 定义点:包含某些定义的程序中的一个点。
- 参考点:程序中包含对数据项的引用的点。
- 评估点:包含表达式评估的程序中的一个点。
数据流属性 –
- 可用表达式——一个表达式被称为在程序点 x 沿着它到达 x 的路径可用。表达式在其评估点可用。
如果在使用之前没有任何操作数被修改,则称表达式 a+b 可用。例子 –
优势 –
它用于消除常见的子表达式。 - 到达定义——如果存在从 D 到 x 的路径,其中 D 未被杀死,即未被重新定义,则定义 D 到达点 x。
例子 –
优势 –
它用于常量和变量传播。 - 活变量——如果从 p 到结束变量在重新定义之前被使用,则变量在某个点 p 是活的,否则它变成死的。
例子 –
优势 –
- 它对寄存器分配很有用。
- 它用于消除死代码。
- 繁忙的表达式——一个表达式在一条路径上是繁忙的,如果它的计算存在于这条路径上,并且它的操作数定义在沿着路径计算之前不存在。
优势 –
它用于执行代码移动优化。