14 #ifndef LLVM_ANALYSIS_POSTDOMINATORS_H
15 #define LLVM_ANALYSIS_POSTDOMINATORS_H
41 inline const std::vector<BasicBlock*> &
getRoots()
const {
42 return DT->getRoots();
46 return DT->getRootNode();
50 return DT->getNode(BB);
54 return DT->getNode(BB);
58 return DT->dominates(A, B);
62 return DT->dominates(A, B);
66 return DT->properlyDominates(A, B);
70 return DT->properlyDominates(A, B);
74 return DT->findNearestCommonDominator(A, B);
79 return DT->findNearestCommonDominator(A, B);
101 return df_end(getEntryNode(N));
105 return df_end(getEntryNode(N));
virtual void getAnalysisUsage(AnalysisUsage &AU) const
static PassRegistry * getPassRegistry()
const BasicBlock * findNearestCommonDominator(const BasicBlock *A, const BasicBlock *B)
The main container class for the LLVM Intermediate Representation.
virtual bool runOnFunction(Function &F)
bool properlyDominates(BasicBlock *A, BasicBlock *B) const
static NodeType * getEntryNode(PostDominatorTree *DT)
DominatorTreeBase< BasicBlock > * DT
static nodes_iterator nodes_end(PostDominatorTree *N)
const std::vector< BasicBlock * > & getRoots() const
virtual void releaseMemory()
LLVM Basic Block Representation.
df_iterator< T > df_end(const T &G)
static nodes_iterator nodes_begin(PostDominatorTree *N)
DomTreeNode * operator[](BasicBlock *BB) const
bool dominates(const BasicBlock *A, const BasicBlock *B) const
bool dominates(DomTreeNode *A, DomTreeNode *B) const
virtual void print(raw_ostream &OS, const Module *) const
df_iterator< T > df_begin(const T &G)
void initializePostDominatorTreePass(PassRegistry &)
bool properlyDominates(const DomTreeNode *A, DomTreeNode *B) const
BasicBlock * findNearestCommonDominator(BasicBlock *A, BasicBlock *B)
DomTreeNode * getRootNode() const
FunctionPass * createPostDomTree()
DomTreeNode * getNode(BasicBlock *BB) const