我一直在使用LLVM,我很困惑如何使用与我自己的pass不同的现有pass?准确地说,我的程序需要对任何给定的指令进行支配地位前沿计算。LLVM已经有了作为函数传递实现的支配函数类。我如何在我的模块传递中调用/使用它?
发布于 2012-02-18 03:07:51
警告:我没有实际经验,回答可能是不正确的或过时的。(它很大程度上是基于过时的LLVM来源:version 1.3。)
添加一个include:
#include "llvm/Analysis/DominanceFrontier.h"如果传递If函数,则将该方法(如果未实现)添加到类中:
virtual void getAnalysisUsage(AnalysisUsage &AU) const { }然后把这个放进去:
AU.addRequired<DominanceFrontier>();然后,在您的类runOnFunction方法中:
DominanceFrontier *DF = &getAnalysis<DominanceFrontier>();在此之后,您可以使用:
BasicBlock *BB = /* some BB */;
DominanceFrontier::iterator DFI = DF->find(BB);https://stackoverflow.com/questions/9333726
复制相似问题