如何知道基本块后是否主导另一个?

时间:2019-06-22 22:22:51

标签: clang llvm

我正在尝试编写分析,而我需要的功能之一就是知道某个节点是否后期控制另一个节点。

我已经知道我必须使用:

void LazyProfitability::getAnalysisUsage(AnalysisUsage &AU) const {
   AU.addRequired<PostDominatorTreeWrapperPas>();
   AU.setPreservesAll();
}

1 个答案:

答案 0 :(得分:1)

您可以从分析结果中获得一个PostDominatorTree对象:

auto PDT = &getAnalysis<PostDominatorTreeWrapperPass>().getPostDomTree();

然后按以下方式使用它:

// returns true iff A post-dominates B
PDT->dominates(A, B);