mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Fix the dominates method to return true if the two nodes are the same. Add
a new properlyDominates method to do what the old one did. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24407 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f124d5e500
commit
a35bef9db2
@ -306,16 +306,24 @@ public:
|
||||
inline Node *getIDom() const { return IDom; }
|
||||
inline const std::vector<Node*> &getChildren() const { return Children; }
|
||||
|
||||
/// properlyDominates - Returns true iff this dominates N and this != N.
|
||||
/// Note that this is not a constant time operation!
|
||||
///
|
||||
bool properlyDominates(const Node *N) const {
|
||||
const Node *IDom;
|
||||
while ((IDom = N->getIDom()) != 0 && IDom != this)
|
||||
N = IDom; // Walk up the tree
|
||||
return IDom != 0;
|
||||
}
|
||||
|
||||
/// dominates - Returns true iff this dominates N. Note that this is not a
|
||||
/// constant time operation!
|
||||
///
|
||||
inline bool dominates(const Node *N) const {
|
||||
const Node *IDom;
|
||||
while ((IDom = N->getIDom()) != 0 && IDom != this)
|
||||
N = IDom; // Walk up the tree
|
||||
return IDom != 0;
|
||||
if (N == this) return true; // A node trivially dominates itself.
|
||||
return properlyDominates(N);
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
inline Node(BasicBlock *BB, Node *iDom) : TheBB(BB), IDom(iDom) {}
|
||||
inline Node *addChild(Node *C) { Children.push_back(C); return C; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user