生院第九章_2_研讨.ppt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 含s的块是循环中所有出口结点的必经结点 出口结点是有后继不在循环中的结点 只要循环不是无限循环,则所有出口的必经结点一定会执行 * 循环中没有其它语句对x定值 如果x是只赋值一次的临时变量,这个条件肯定满足 * 循环中x的引用仅由s到达 如果x是临时变量,这个条件一般也满足 * * * * * * * * * 代码外提算法的讨论 条件(2a)和(2b)保证在s中计算的x值必定是L任何出口的x的定值 条件(2c)保证L中任何x的引用在外提前后x都引用s计算的x值 代码外提至少不会增加程序的运行时间(因为外提的代码在每次进入循环时至少要执行一次),而且可能在很大程度上减少运行时间 代码外提后数据流信息的维护 上述代码外提的算法并没有改变ud链信息 根据条件(2a),(2b)和(2c) 原来由s的定值到达的引用,在s移动位置后,定值仍然能到达 s应用的变量的定值 在循环L外,可以到达前置块 原来在循环L内,由步骤(3)知道,它们已经移到前置块s的前面 ud链的维护 通过指针间址,只需改变指向s的指针即可 直接使用语句指针,则需要根据du链改变所有引用s的ud链 必经结点信息 前置结点称为循环首结点的直接必经结点 首结点的原来的必经结点

文档评论(0)

1亿VIP精品文档

相关文档