return dominatedBySlowTreeWalk(A, B);
}
- inline bool dominates(NodeT *A, NodeT *B) {
+ inline bool dominates(const NodeT *A, const NodeT *B) {
if (A == B)
return true;
- return dominates(getNode(A), getNode(B));
+ // Cast away the const qualifiers here. This is ok since
+ // this function doesn't actually return the values returned
+ // from getNode.
+ return dominates(getNode(const_cast<NodeT *>(A)),
+ getNode(const_cast<NodeT *>(B)));
}
NodeT *getRoot() const {
return DT->dominates(A, B);
}
- inline bool dominates(BasicBlock* A, BasicBlock* B) const {
+ inline bool dominates(const BasicBlock* A, const BasicBlock* B) const {
return DT->dominates(A, B);
}
// dominates - Return true if A dominates B. This performs the
// special checks necessary if A and B are in the same basic block.
- bool dominates(Instruction *A, Instruction *B) const {
- BasicBlock *BBA = A->getParent(), *BBB = B->getParent();
- if (BBA != BBB) return DT->dominates(BBA, BBB);
+ bool dominates(const Instruction *A, const Instruction *B) const {
+ const BasicBlock *BBA = A->getParent(), *BBB = B->getParent();
+ if (BBA != BBB) return dominates(BBA, BBB);
// It is not possible to determine dominance between two PHI nodes
// based on their ordering.
return false;
// Loop through the basic block until we find A or B.
- BasicBlock::iterator I = BBA->begin();
+ BasicBlock::const_iterator I = BBA->begin();
for (; &*I != A && &*I != B; ++I) /*empty*/;
//if(!DT.IsPostDominators) {