有没有办法在.ll文件上获取'phi'说明?
对于以下部分代码,我没有得到任何'phi'指令 在字节码上:
int y, z;
y = f;
if (y < 0)
z = y + 1;
else
z = y + 2;
return z;
我知道我可以使用传递“-mem2reg”,但是如果有可能的话,我希望能够在字节码上看到phi指令。
答案 0 :(得分:4)
LLVM中的虚拟寄存器是SSA形式,而存储器单元则不是。对于像Clang这样的LLVM前端,不必关心SSA形式是很方便的。如果我使用Clang将C代码编译为LLVM IR,则所有变量都在堆栈上分配。不需要SSA表单,因为z
位于内存中。
如果您使用
opt -mem2reg -S example.ll -o example-opt.ll
如前面的评论中所建议的,z
不再在堆栈上分配,而是在虚拟寄存器中分配。因此,您还将看到一个phi指令,用于维护SSA表单。