为什么我必须在字节码优化中执行此 mem2reg 传递以获得另一个优化传递结果? mem2reg有什么用?
opt -dce myfile.bc
在这种情况下,我没有更改输出代码
opt -mem2reg -dce myfile.bc
在第二种情况下,我更改了输出代码
编辑: LLVR IR 仍然是 SSa 形式,不是吗?使用 mem2reg 我应该有一个“修剪过的” SSA 表单,对吗?
最佳答案
mem2reg pass 将非 SSA 形式的 LLVM IR 转换为 SSA 形式,将加载和存储提升到堆栈分配的值到“寄存器”(SSA 值)。许多 LLVM 优化过程都对 SSA 形式的代码进行操作,因此很可能会在非 SSA 形式的代码中看到 IR。
这里有更多信息:http://llvm.org/docs/Passes.html#mem2reg-promote-memory-to-register
关于optimization - 为什么在没有 mem2reg 的情况下优化过程不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9791528/