正在加载图片...
3.删除死代码 死代码有两种情况: (1)在分支程序中,测试语句取固定值,如取ture,则 false分支的代码是死代码。这种情况下删除死代码不 可能局限在基本块内 (2)变量A被定值后不再被引用,或者仅有的定值与引 用为A:=A+C的递归赋值形式,则该定值语句是死代 码,称为无用赋值。例如基本块B5中删除公共子表达 式后t7、t6有相同的值,故对7的引用可由t6来代替, 同样对t10的引用也可由t8来代替。故语句(19)可转换 成a6:=9,语句(21)可转换成a|t8:=x。如果t7,t10 出了基本块B5后也不活跃(即不再被引用),则(16)的 t7:=t6和(20)的t10:=t8便成为无用赋值。在基本块范围 内,变量A在定值后未经引用又发生了对A的第二次 定值,则前一定值为无用赋值 1010 3. 删除死代码 死代码有两种情况: (1) 在分支程序中,测试语句取固定值,如取ture,则 false分支的代码是死代码。这种情况下删除死代码不 可能局限在基本块内。 (2) 变量A被定值后不再被引用,或者仅有的定值与引 用为A:=A+C的递归赋值形式,则该定值语句是死代 码,称为无用赋值。例如基本块B5中删除公共子表达 式后t7、t6有相同的值,故对t7的引用可由t6来代替, 同样对t10的引用也可由t8来代替。故语句(19)可转换 成a[t6]:=t9,语句(21)可转换成a[t8]:=x。如果t7, t10 出了基本块B5后也不活跃(即不再被引用),则(16)的 t7:=t6和(20)的t10:=t8便成为无用赋值。在基本块范围 内,变量A在定值后未经引用又发生了对A的第二次 定值,则前一定值为无用赋值。 
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有