【问题标题】:Specify dependency of my LLVM pass on the mem2reg pass指定我的 LLVM 通行证对 mem2reg 通行证的依赖关系
【发布时间】:2013-03-21 07:04:00
【问题描述】:

我正在编写一个ModulePass 并使用opt -load 调用它。我需要在我的通行证运行时将 alloca 提升为寄存器,使用 -mem2reg 开关进行选择。

有一个link 表示PromoteMemoryToRegsiter 通道是一个转换通道,因此我的通道不需要。这是 2010 年的声明。现在还成立吗?

我发现的一个帖子提出了类似的建议

AU.addRequiredID(PromoteMemoryToRegister::MemoryToRegisterID);

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

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

【问题讨论】:

    标签: llvm llvm-3.0


    【解决方案1】:

    一个变换通道和另一个通道有什么区别?

    一个变换通道是可能使其他通道的结果无效的通道。

    如何为我的通行证表达这种依赖关系?

    首先,我推荐阅读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
    

    【讨论】:

    • 我们在使用opt 和编写我们自己的使用PassManager 的实例之间来回切换,目前还不确定。如果订单那么容易实现,那么现在就足够了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多