有没有人知道如何在LLVM 3.5中遍历统治者树?我可以使用DominatorTree *DT = &getAnalysis<DominatorTreeWrapperPass>(F).getDomTree();
检索DOM树。但是,我不确定如何遍历它。有什么想法吗?
答案 0 :(得分:3)
这里的“横越”是什么意思? DominatorTree
包含有用的调用,例如dominates
,getDescendants
和isReachableFromEntry
。请注意,它也来自DominatorTreeBase
,因此您可能需要检查此类提供的方法。
有大量DominatorTree
使用LLVM本身的例子。
答案 1 :(得分:3)
如果您只想以深度优先顺序遍历DominatorTree,可以尝试:
for (auto node = GraphTraits<DominatorTree *>::nodes_begin(DT);
node != GraphTraits<DominatorTree *>::nodes_end(DT); ++node) {
BasicBlock *BB = node->getBlock();
// whatever you want to do with BB
}
此代码段摘自StraightLineStrengthReduce。