【发布时间】:2022-07-03 23:41:49
【问题描述】:
我正在学习 ssa 形式的编译器优化。我遇到的一个困难是如何在修改调用流图的结构后保留/修复/重建 ssa 表单。
假设我有以下 cfg(a、b、c 变量是虚拟变量,忽略它们):
现在我想在while节点之前插入一个节点,这样结果就变成了:
如图所示,新节点改变了 x_1 和 x_2 的优势边界,并要求将 while 块的 phi 节点“拆分”为两个。
什么算法可以做到这一点?我查看了书籍和幻灯片,但没有找到任何解释如何有效地做到这一点的东西。
【问题讨论】:
标签: compiler-construction ssa call-flow