编泽原理 墨例如:将基本块 X=x+b*c;y:=xtb*c;删 慧结果为: 除公共子表达式 过程如下图: tl:=b*c; t2:=x+t1; t=网 X=2; t2=Xt1X1 t3=t1; t4=x+t1; X=t2; L一复写特楼 y=t4; [=t4+t3;←X X=4; 第16页
编译原理 第16页 例如:将基本块 x:=x+b*c; y:=x+b*c;删 除公共子表达式 过程如下图: 结果为: t1:= b*c ; t2:= x+t1 ; x:= t2 ; t3:= t1; t4:= x+t1 ; y:= t4 ;
编泽原理 2.复写传播 形成为f:=g的赋值叫做复写语句。 优化过程中会大量引入复写。 复写传播变换的做法是在复写语句f:=g后,尽可能 用g代表f。 蒂置客辑凳摻赫莱会号它给其它优化如 第引7觉
编译原理 第17页 2.复写传播 形成为f := g的赋值叫做复写语句。 优化过程中会大量引入复写。 复写传播变换的做法是在复写语句f:=g后,尽可能 用g代表f 。 复写传播变换本身并不是优化,但它给其它优化如 常量合并和 死代码删除带来机会
编泽原理 P: 翔 I: =1 T2:=addr (A) -4 Ts:=addr (B) 一4 3) T:=41 5) T3:=T2[T1] T4:=T1 To:-Ts [TaT Ti 9) T,:=T3卷T6 {10)P:=P+T, 11)1:=I+1 3)T1:=T1+4 12) if I<=20 goto (5) 第18页
编译原理 第18页
编泽原理 3.删除无用代码 四元式t1:=xopy;t1不再被引用,则无用。 例如:①A:=B; .;{未引用A} A:=C*D 则①A:=B;为无用代码,可删除 第9
编译原理 第19页 3.删除无用代码 四元式t1:=x op y; t1不再被引用,则无用。 例如: ①A:=B; … ;{未引用A} A:=C*D 则①A:=B;为无用代码,可删除
编译原理 (①) P:=0 (2) 1:=1 (4) T2:=addr (A)-4 (7) Ts:=addr (B)-4 (3)T:=4 T3:=T2[T] 无用代码 (6 T4:=T (8) T6:=T5[T] (9)T7:=T3*T6 (10)P:=P+T3 (11)1:=I+1 (3)T1:=T1+4 (12)ifT,<=80g0to(5) 第20页
编译原理 第20页