4

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

有一个链接表明,PromoteMemoryToRegsiter 通行证是一个转换通行证,因此我的通行证不需要。这是 2010 年的声明。这仍然成立吗?

我发现的帖子之一建议类似

AU.addRequiredID(PromoteMemoryToRegister::MemoryToRegisterID);

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

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

4

1 回答 1

5

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

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

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

首先,我推荐阅读官方“如何编写通行证”指南的通行证依赖部分。在任何情况下,在转换通道之间添加依赖项的正确方法是在您的通道管理器中添加一个在另一个之前(请参阅通道管理器的指南部分),或者,如果您只是调用opt,则添加您想要的所有通道按照您希望它们发生的顺序,例如:

opt -load mypass.so -mem2reg -mypass
于 2013-03-21T07:41:14.403 回答