mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-20 14:29:27 +00:00
Add dominates/properlyDominates queries to IDom.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29456 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9373beba60
commit
6aba48338f
@ -101,7 +101,17 @@ public:
|
||||
inline BasicBlock *operator[](BasicBlock *BB) const {
|
||||
return get(BB);
|
||||
}
|
||||
|
||||
/// dominates - Return true if A dominates B.
|
||||
///
|
||||
bool dominates(BasicBlock *A, BasicBlock *B) const;
|
||||
|
||||
/// properlyDominates - Return true if A dominates B and A != B.
|
||||
///
|
||||
bool properlyDominates(BasicBlock *A, BasicBlock *B) const {
|
||||
return A != B || properlyDominates(A, B);
|
||||
}
|
||||
|
||||
/// get() - Synonym for operator[].
|
||||
///
|
||||
inline BasicBlock *get(BasicBlock *BB) const {
|
||||
|
@ -211,6 +211,17 @@ bool ImmediateDominators::runOnFunction(Function &F) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// dominates - Return true if A dominates B.
|
||||
///
|
||||
bool ImmediateDominatorsBase::dominates(BasicBlock *A, BasicBlock *B) const {
|
||||
assert(A && B && "Null pointers?");
|
||||
|
||||
// Walk up the dominator tree from B to determine if A dom B.
|
||||
while (A != B && B)
|
||||
B = get(B);
|
||||
return A == B;
|
||||
}
|
||||
|
||||
void ImmediateDominatorsBase::print(std::ostream &o, const Module* ) const {
|
||||
Function *F = getRoots()[0]->getParent();
|
||||
for (Function::iterator I = F->begin(), E = F->end(); I != E; ++I) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user