这些信息是: ① 在基本块外被定值并在基本块内被引用的所有标识符,就是作为叶子结点上标记的那些标识符。 ② 在基本块内被定值且该值能在基本块后被引用的所有标识符,就是DAG各结点上的那些附加标识符。 前面我们所删除的无用赋值只是其中一种情况,在这里,我们利用这些信息,根据有关变量在基本块后被引用的情况,可以进一步删除基本块中的其它情况的无用赋值。 上例中,假设T0,T1,…,T6在基本块的后面都没有被引用,则可将G′重写为如下代码序列: (1) S1∶=R+r (2) A∶=6.28*S1 (3) S2∶=R-r (4) B∶=A *S2 其中S1和S2用于存放中间临时变量。整个序列中,没有生成对T0,T1,…T6赋值的代码。 |