mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Add function DominatorTree::getDescendants().
As its name suggests, this function will return all basic blocks dominated by a given block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191014 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a22ff961db
commit
4f77a21d6c
@ -346,6 +346,20 @@ public:
|
|||||||
DomTreeNodeBase<NodeT> *getRootNode() { return RootNode; }
|
DomTreeNodeBase<NodeT> *getRootNode() { return RootNode; }
|
||||||
const DomTreeNodeBase<NodeT> *getRootNode() const { return RootNode; }
|
const DomTreeNodeBase<NodeT> *getRootNode() const { return RootNode; }
|
||||||
|
|
||||||
|
/// Get all nodes dominated by R, including R itself. Return true on success.
|
||||||
|
void getDescendants(NodeT *R, SmallVectorImpl<NodeT *> &Result) const {
|
||||||
|
const DomTreeNodeBase<NodeT> *RN = getNode(R);
|
||||||
|
SmallVector<const DomTreeNodeBase<NodeT> *, 8> WL;
|
||||||
|
WL.push_back(RN);
|
||||||
|
Result.clear();
|
||||||
|
|
||||||
|
while (!WL.empty()) {
|
||||||
|
const DomTreeNodeBase<NodeT> *N = WL.pop_back_val();
|
||||||
|
Result.push_back(N->getBlock());
|
||||||
|
WL.append(N->begin(), N->end());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// properlyDominates - Returns true iff A dominates B and A != B.
|
/// properlyDominates - Returns true iff A dominates B and A != B.
|
||||||
/// Note that this is not a constant time operation!
|
/// Note that this is not a constant time operation!
|
||||||
///
|
///
|
||||||
@ -755,6 +769,12 @@ public:
|
|||||||
return DT->getRootNode();
|
return DT->getRootNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get all nodes dominated by R, including R itself. Return true on success.
|
||||||
|
void getDescendants(BasicBlock *R,
|
||||||
|
SmallVectorImpl<BasicBlock *> &Result) const {
|
||||||
|
DT->getDescendants(R, Result);
|
||||||
|
}
|
||||||
|
|
||||||
/// compare - Return false if the other dominator tree matches this
|
/// compare - Return false if the other dominator tree matches this
|
||||||
/// dominator tree. Otherwise return true.
|
/// dominator tree. Otherwise return true.
|
||||||
inline bool compare(DominatorTree &Other) const {
|
inline bool compare(DominatorTree &Other) const {
|
||||||
|
Loading…
Reference in New Issue
Block a user