optimization - 为什么在没有 mem2reg 的情况下优化过程不起作用?

标签 optimization llvm bytecode

为什么我必须在字节码优化中执行此 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/

相关文章:

Objective-C 对象下标、iOS5 和 GCC

java - 如何确定 InvokeInstruction (BCEL) 调用的方法?

Javassist。主要思想是什么,真正的用途是什么?

Apache Webserver 安全和优化技巧

multithreading - 并行化: pthreads or OpenMP?

algorithm - 简化/优化一段查看条件组合的代码的最佳方法是什么?

llvm 错误-预期指令操作码错误

c++ - 小型 clang 项目上的 std::terminate() 链接器错误

java - 类文件中的内部类属性有什么用?

sql-server - 优化性能不佳的查询需要采取哪些步骤?