24. 四元式对应的 DAG 结点形式
按其四元式对应结点的后继个数分成四种
类型: 0 型、 1 型、 2 型、 3 型。
DAG结点
0 型:A:=B (:=,B,—,A) n1 A
B
n2 A
1 型: A:=op B (op,B, — ,A) op
n1
n1
B n3
2 型: A:=B op C (op, B, C ,A) op
n1
n1 n2
n2
B C
61. 循环优化的一些基本概念
点:程序中某一个四元式的位置;
定值点:对某变量赋值或输入值的四元式位
置;
引用点:引用某变量的四元式位置;
变量 A 的到达与定值: d 是 A 的定值点, u
是 A 的引用点,存在一条从 d 到 u 的通路,
并此路上没有 A 的其他定值点,称 d 点对 A
的定值能达到 u 点。
活跃:存在一条从 p 点开始的通路,在这条
通路上引用了变量 A 在 p 点的值,则称 A 在
62. 循环不变运算
定义:形如 (s) A:=B op C 四元式,若
(1) B 、 C 为常量;
(2) 到达 (s) 点的 B 、 C 定值点都在循
环外;
则 (s) 为循环不变运算, A 、 B 、 C
为循环不变量。
65. {B2,B3,B4} 是循环
B1 B2 是循环的入口结点
(1)i:=1
B4 是循环的出口结点
( 2 ) if x < y goto B3 B2
(3) i:=2 B3 (5) y:=y-1 B4
(4) x:=x+1 (6) if y<=20 goto B5
B5
(7)j:=i j=1
B1→B2→B4→B5
66. B1→ B2’→ B2→B4→B5
i:=1 B1
原因: B3 不是循环
B’2 出口 B4 的必经结点
i:=2
。
if x < y goto B3 B2
B3 y:=y-1
B4
x:=x+1
if y<=20 gotoB5
B5 j=2
j:=i
67. B2 是循环出口 B4 的必经结点。
B1→B2→B3→B4→B2→B4→B5
B1
i:=1
i:=3 B2
if x < y goto B3
i:=2 B3 y:=y-1 B4
x:=x+1 if y<=20 goto B5
B5 j=3
j:=i
68. B1→ B2’→ B2→B3→B4→B2→B4→B5
i:=1 B原因:循环中还有 i 的其他定值点
1
B’2
i:=3
if x < y goto B3 B2
B3 y:=y-1
B4
i:=2
x:=x+1 if y<=20 gotoB5
B5
j:=i
j=2
69. B2 是循环出口 B4 的必经结点
B1 。
i:=1
循环中没有 i 的其他定值点
B1→B2→B3→B4→B2→B4→B5
if x < y goto B3 B2
a := i B3 i:=2 B4
x := x + 1 y:=y-1
if y<=20 goto B5
B5
j:=a j=1
70. B1→ B2’→ B2→B3→B4→B2→B4→B5
i:=1 B1
原因:循环中的
B3 中有对 i 的引用
B’2 ,但到达此处的定
i:=2
值并不仅是 B4 中
的 i:=2 。
if x < y goto B3 B2
B3 y:=y-1
B4
a := i
x:=x+1 if y<=20 gotoB5
B5 j=2
j:=a
71. 代码外提条件
1) 该不变运算所在结点 ( 基本块 ) 必须是
循环出口结点的必经结点或者该不变
运算所定值的不变量在循环出口之后
不是活跃的。
2) 循环内不变运算所定值的变量只有唯
一的一个定值点,即在其他地方未再
定值。
3) 外提循环不变运算 (s) A:=B op C 时循
环内所有 A 的引用点必须而且仅是 (s)
所能到达的。
72. 归纳变量
定义:循环中变量 I 只有唯一的形如
I:=I±C 的赋值,其中 C 为循环不变量
,则称 I 为循环中基本归纳变量。
如果变量 J 与基本归纳变量 I 可规划为
线性关系 J:=C1*I+C2 ,其中 C1 、 C2
为循环不变量,则称 J 是与 I 同族的归
纳变量。
73. 强度削弱与删除归纳变量
( 1) 利用循环不变运算的信息,找出循
环中基本归纳变量 X ;
( 2) 找出所有归纳变量 A ,并指出 A
与 X 的线性关系 A : =C 1 X+C 2 。
( 3) 强度减弱,将循环 L 中归纳变量的
算式化为自增赋值算式,然后:
在循环前置节点中按原式计算初值
;
将自增赋值算式置于 L 中原基本归