我如何使用LLVM的exisiting函数传递

我一直在使用LLVM,并且我很困惑如何从我自己的传球中使用不同的现有传球? 准确地说,我的程序需要针对任何给定指令的Dominance Frontier Calculation。 LLVM已经具有作为函数传递实现的Dominance函数Class。 我如何在我的Module Pass中调用它/使用它?


警告:我没有真正的经验,答案可能不正确或过时。 (它主要基于过时的LLVM资源:版本1.3。)

添加一个包含:

#include "llvm/Analysis/DominanceFrontier.h"

如果你的Pass如果Function Pass,则添加到你的类的方法(如果它没有实现):

virtual void getAnalysisUsage(AnalysisUsage &AU) const { }

并把它放进去:

 AU.addRequired<DominanceFrontier>();

然后,在你的类的runOnFunction方法中:

 DominanceFrontier *DF = &getAnalysis<DominanceFrontier>();

之后你可以使用:

    BasicBlock *BB = /* some BB */;
    DominanceFrontier::iterator DFI = DF->find(BB);
链接地址: http://www.djcxy.com/p/57663.html

上一篇: How do I use an exisiting function pass from my LLVM

下一篇: how can this be prevented?