llvm - 指定我的 LLVM 传递对 mem2reg 传递的依赖

标签 llvm llvm-3.0

我正在写一个 ModulePass并使用 opt -load 调用它.我会要求 alloca已在我的通行证运行时升级为注册,使用 -mem2reg 开关进行选择。

有一个link这表明PromoteMemoryToRegsiter 传递是一个转换传递,因此我的传递不需要。这是 2010 年的声明。这仍然成立吗?

我发现的其中一篇帖子提出了类似的建议

AU.addRequiredID(PromoteMemoryToRegister::MemoryToRegisterID);

但这与我上面链接的帖子相矛盾。

所以我的问题是,如果可能的话,我如何表达对我的通行证的这种依赖性?一般来说,我如何表达这种传递依赖关系?转换传递和另一个传递之间有什么区别?

最佳答案

What's the difference between a transform pass and another pass?



转换过程是可能使其他过程的结果无效的过程。

How to I express this dependency for my pass?



首先,我推荐阅读the pass-dependency section of the official "how to write a pass" guide .在任何情况下,在转换传递之间添加依赖关系的正确方法是在传递管理器( see the guide section on the pass manager )中在另一个传递之前添加一个,或者,如果您只是调用 opt ,然后按照您希望它们发生的顺序添加您想要的所有通行证,例如:
opt -load mypass.so -mem2reg -mypass

关于llvm - 指定我的 LLVM 传递对 mem2reg 传递的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15541352/

相关文章:

c++ - 什么是正确的 LLVM header guard 样式?

c++ - 如何在LLVM中检测const修饰符?

optimization - 我如何查看 LLVM 的 opt 使用了哪些优化过程?

c# - 来自 LLVM 绑定(bind)的不平衡堆栈警告

linker - 将 LLVM JIT 代码链接到外部 C++ 函数

c++ - LLVM : inject debugging lines in C++ source code

ios - 在 C 语言中默认初始化的基本类型是什么?

compiler-errors - 到底应该使用什么命令行来从 <Target>RegisterInfo.td 文件中生成所有记录?

c++ - llvm::Type 结构的字符串表示