ВНИМАНИЕ: У меня нет реального опыта, и ответ может быть неправильным или устаревшим.(в основном это основано на устаревших источниках LLVM: версия 1.3 .)
Добавить включение:
#include "llvm/Analysis/DominanceFrontier.h"
Если ваш проход, если 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);