加载中...

死代码消除(Dead Code Elimination,DCE)是一类编译优化,删除对程序可观察行为没有影响的代码,包括结果从未被使用的计算(死定义)与永远不会执行的语句(不可达代码)。
基于活跃变量分析:若某赋值定义的变量在之后任何路径上都不再被读取,且该计算无副作用,则可删除;不可达代码则通过控制流图的可达性判定。在 SSA 形式下,DCE 退化为简单的「使用计数为零则删」,配合工作表算法可迭代传播。
常量折叠、条件常量传播会把分支判定为恒真/恒假,产生新的不可达代码,故 DCE 常与它们交替执行。前端工程中的 Tree Shaking 是模块级死代码消除的变体。
对有副作用的调用、volatile 访问不可删除;调试构建通常关闭 DCE 以保留断点位置。

登录 后参与讨论
暂无讨论,来发表第一条评论吧