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

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

https://stackoverflow.com/questions/9791528/

相关文章:

django - 如何为基于ListView的类写get方法

ruby-on-rails - 消息 Controller 中未定义的方法 `stringify_k

php - DOMPDF 安装选项

ruby-on-rails - 创建 Rails 音乐播放器应用程序(类似于 Rdio)

optimization - 更好的初始猜测可能对优化收敛更差

asp.net - 如何检查 Amazon S3 存储桶中文件夹的子文件夹大小

ruby-on-rails - 在 Rails 迁移中排序的模式字段

oracle - 如何以编程方式在 PL/SQL 中设置表名?

ajax - JSF f :ajax listener not called

matlab - 不同长度的向量之间的相关性