目录
(2)什么是Reaching Definition Analysis?
(3)Reaching Definition Analysis有何用处?
(4)如何实现Reaching Definition Analysis?
(1)什么是Reaching Definition?
假设变量v在程序点p处被定义(赋值),我们可以说,变量v在程序点p处的定义到达了程序点p',如果:
a. 程序点p和p'之间存在一条路径;
b. 变量v在上述路径中没有被重新定义(赋值);
示意图如下:
(2)什么是Reaching Definition Analysis?
设p为某程序点,v = E为v的某定义语句:
RDA是,针对程序中的每个定义(p, v = E),分析出它可能到达的所有程序点(通常是一条指令的前后处)。
等价说法是,RDA是针对程序中的每个程序点(通常是一条指令的前后处),分析出可能到达此处的所有定义(p, v = E)。
可以看出,RDA属于may分析,即RDA分析出的结果在程序实际执行时不一定会发生。
(3)Reaching Definition Analysis有何用处?
用处很多, 举两个例子来说明:
a. 死代码去除。假设我们分析出变量v在程序点p处的定义(p, v)可能到达的程序点集合为{ },而在这些程序点对应的指令处,变量v