如果没有mem2reg,为什么优化传递不起作用?

时间:2012-03-20 17:05:13

标签: optimization llvm bytecode

为什么我必须在字节码优化中执行此mem2reg传递以获得另一个优化传递结果? mem2reg有什么用?

opt -dce myfile.bc

在这种情况下,我没有更改输出代码

opt -mem2reg -dce myfile.bc

在第二种情况下,我对输出代码进行了更改

编辑: LLVR IR仍然是SSa形式,不是吗?使用mem2reg我应该有一个“修剪”的SSA表格,是吗?

1 个答案:

答案 0 :(得分:7)

mem2reg pass将非SSA形式的LLVM IR转换为SSA形式,将堆栈分配值的加载和存储提升到“寄存器”(SSA值)。许多LLVM优化传递都以SSA形式运行,因此很可能是非SSA形式的无操作IR。

此处提供了更多信息:http://llvm.org/docs/Passes.html#mem2reg-promote-memory-to-register