在头文件llvm/Analysis/PostDominators.h中提供了后序支配树PostDominatorTree。
方法与前序支配树DominatorTree类似,可以查看文章在LLVM中如何判断二个基本块(Basic Block)的支配关系。
Function* F;
...
//为函数*F的控制流图构建后支配树(PostDominatorTree)
PostDominatorTree* PostDT=new PostDominatorTree();
PostDT->runOnFunction(*F);
//打印出支配树
PostDT->print(errs(),0);
//打印出所有基本块之间的支配关系
for(Function::iterator I=F->begin(),E=F->end();I!=E;I++){
for(Function::iterator J=F->begin(),JE=F->end();J!=JE;J++){
errs()<<I->getName()<<" "<<J->getName()<<" "<<PostDT->dominates(I,J)<<"\n";
}
}