补充二信息流分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
补充二信息流分析.ppt

检测:针对第一种情况(无定值而使用) in_d[B]:表示在B入口处所有定值的变量之集; out_d[B]:表示B在出口处所有定值的变量之集; def_d[B]:表示B中所有定值的变量之集。 数据流方程: in_d[B*]={ } B*为入口块 in_d[B]=∪(或∩)i=1,2…n(out_d[Bi]) Bi为B的前驱块 out_d[B]=def_d[B]∪in_d[B] 结论: 若in_live[B]–in_d[B]≠{},则必有变量无定值而使用; 特例:若in_live[B*]≠{},则必有变量无定值而使用. 针对第2和3中情况: in_dd[Bi]: 表示块B入口处所有定值而未使用的变 量之集; out_dd[Bi]:表示块B出口处所有定值而未使用的变量之集; def_dd1[Bi]={x|x在(B,di)点定值,且从(B,d1)…. (B,di)无x的使用性出现。} def_dd2[Bi]={x|x在(B,di)点定值,且从(B,di+1)到B出口,无x的使用性出现。} in_dd[B*]={} B*为入口块 in_dd[B]=∪(或∩)out_dd[B] out_dd[B]=def_dd2[B]∪(in_dd[B]-use[B]) 结论: 若in_dd[B]∩def_dd1[B]≠{},则有变量重复定值;若in_dd[B]-in_live[Bi]≠{},则有变量定值而未使用,或重复定值。 若out_dd[B*]≠{}, B*为出口块,则有变量定值而未使用。 第二个应用:程序优化-全局常表达式节省 程序优化:全局常表达式节省 问题:利用的信息不充分 如何解决: 程序优化中,我们感兴趣的是什么? 对于每个块要知道哪些常量定值是一定能到达其出口处的 v vvl 定义:常量定值 若在块B中有x:=c,其中c是常数,且该定值是向下暴露的,,则称x有一个常量定值,记为x·c。 定义: 注销常量定值 若有x:=E,则称注销了x的常量定值。 定义: 广义常量定值 若块B中有向下暴露的定值x:=E,且 E的值可计算为一个常量c,则称产生一个广义常量定值x·c。 定义: 注销广义常量定值 若有x=… 则称注销了广义常量定值 数据流方程: in_ac[B0]={} B0为入口块 in_ac[Bi]=∩j=1,2,…n out_ac[Bj],Bj为Bi的前驱 out_ac[Bi]=def_ac[Bi]U(in_ac[Bi]-kill_ac[Bi]) 其中: in_ac[Bi]:定能达到Bi入口的所有常量定值的集合 out_ac[Bi]:定能达到Bi出口的所有常量定值的集合 def_ac[Bi]:Bi所产生且对块外有效的常量定值 kill_ac[Bi]:Bi所注销的所有常量定值的集合 优化过程: 建立数据流方程 求解 对每一基本块进入优化 把in-ac(B)填入vvl 按原方法优化 v vvl 例题 in-ac[B1] = {} out-ac[B1] = {x.1,y.2} in-ac[B2] = {x.1,y.2} out-ac[B2] = {x.1,y.2,z.3,b.4} in-ac[B3] = {x.1,y.2} out-ac[B3] = {x.1,y.2,z.3,b.4} in-ac[B4] = {x.1,y.2,z.3,b.4} out-ac[B4] ={x.1,y.2,z.3,b.4,k.7,u.9,r.16} 第三个应用:公共子表达式节省 定义:表达式定值 在块B中,若有d: x:=E,则称有表达式E的定值,d为定值点若从di+1到B的出口没有对表达式E中变量的赋值,则称B定值了表达式E 定义:注销表达式定值 若有 x:=E,且x出现在表达式E中,注销了E的定值。 数据流方程: in_e[B0] = {} B0为入口块 out_e[Bi] = def_e[Bi]∪ (in_e[Bi]-kill_e[Bi]) in_e[Bi] = ∩Bj?pre(Bi)out_e[Bj] Bj为Bi的前驱 K 需要注意的两个问题: 形式相同的表达式未必能节省(已解决) 形式不同的表达式也可能节省(未解决) 定义:等式定值 在块B中,若有x:=y。且从di+1到B出口无对x或y的赋值,则称B有了一个等式定值。即x=y 定义:注销等式定值 若有对x的赋值x:=…,则称注销了所有x的等式定值。 数据流方程 in_eq[B0] = {} B0为入口块 out_eq[Bi] = def_eq[Bi]∪(in_e[qBi]-kill_eq[Bi]) in_eq[Bi] = ∩Bj?pre(Bi)out_eq[Bj] 利用等式定值和表达式定值,可以解决形式

文档评论(0)

wuyouwulu + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档