1. 不可达代码是指无论输入什么都不会执行的代码,对过程而言,即是从入口基本块到不了(没有路径可达)的那些基本块;死代码是指可达但计算了后面任何可执行路径都不会使用其计算结果的代码,比如死变量和死指令
2. 不可达代码的识别本质是有向图的可达性判定与传递闭包计算问题,一般用DFS法处理。先找到从入口基本块不可达的基本块,再删除(同时改变其前驱和后继基本块的指向),直到找不到为止。死代码的识别可用活跃分析或必要指令标记法,对于活跃分析,删除基本块出口不活跃的变量定值,以及它所使用不活跃操作数的定值;对于标记法,从必要指令出发,根据def-use链和use-def链,不断标记对其操作数有贡献的指令,最后删除没被标记的那些指令
3. 不可达代码和死代码可能来源于程序员,更可能源于编译器的其它一些优化产生,删除优化它们能显著减小代码体积,对执行速度有间接的影响,因为可能改善指令高速缓层的利用率
posted on 2023-09-06 23:33
春秋十二月 阅读(59)
评论(0) 编辑 收藏 引用 所属分类:
Compiler