Lines Matching refs:dominates
122 bool DominatorTree::dominates(const BasicBlock *BB, const Use &U) const {
127 return dominates(BB, PN->getIncomingBlock(U));
132 // dominates - Return true if Def dominates a use in User. This performs
135 bool DominatorTree::dominates(const Value *DefV,
159 // The value defined by an invoke dominates an instruction only if it
160 // dominates every instruction in UseBB.
161 // A PHI is dominated only if the instruction dominates every possible use in
164 return dominates(Def, UseBB);
167 return dominates(DefBB, UseBB);
173 // note that dominates(Def, Def->getParent()) is false.
174 bool DominatorTree::dominates(const Instruction *Def,
194 return dominates(E, UseBB);
197 return dominates(DefBB, UseBB);
200 bool DominatorTree::dominates(const BasicBlockEdge &BBE,
206 if (!dominates(End, UseBB))
210 // dominates the use block implies that the edge also does.
215 // like to do is split it and check if the new block dominates the use.
230 // dominates all of NormalDest's predecessors (X, B, C in the example). X
231 // trivially dominates itself, so we only have to find if it dominates the
233 // only properly dominate a node if NormalDest dominates that node too.
244 if (!dominates(End, BB))
250 bool DominatorTree::dominates(const BasicBlockEdge &BBE, const Use &U) const {
258 // Otherwise use the edge-dominates-block query, which
265 return dominates(BBE, UseBB);
268 bool DominatorTree::dominates(const Value *DefV, const Use &U) const {
304 return dominates(E, U);
310 return dominates(DefBB, UseBB);
313 // doesn't dominate anything in the block. If it's a PHI, it dominates
336 // Edge BBE1 dominates edge BBE2 if they match or BBE1 dominates start of BBE2.
337 bool DominatorTree::dominates(const BasicBlockEdge &BBE1,
341 return dominates(BBE1, BBE2.getStart());