mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-03 15:36:21 +00:00
Switch DomTreeNode::assignDFSNumber from using a std::set to using
a smallptrset. This speeds up domtree by about 15% and postdomtree by 20%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40828 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e93e311981
commit
7ae8c4c810
@ -496,10 +496,10 @@ BasicBlock *DominatorTreeBase::findNearestCommonDominator(BasicBlock *A,
|
||||
/// in dfs order.
|
||||
void DomTreeNode::assignDFSNumber(int num) {
|
||||
std::vector<DomTreeNode *> workStack;
|
||||
std::set<DomTreeNode *> visitedNodes;
|
||||
SmallPtrSet<DomTreeNode *, 32> Visited;
|
||||
|
||||
workStack.push_back(this);
|
||||
visitedNodes.insert(this);
|
||||
Visited.insert(this);
|
||||
this->DFSNumIn = num++;
|
||||
|
||||
while (!workStack.empty()) {
|
||||
@ -509,12 +509,12 @@ void DomTreeNode::assignDFSNumber(int num) {
|
||||
for (std::vector<DomTreeNode*>::iterator DI = Node->begin(),
|
||||
E = Node->end(); DI != E && !visitChild; ++DI) {
|
||||
DomTreeNode *Child = *DI;
|
||||
if (visitedNodes.count(Child) == 0) {
|
||||
visitChild = true;
|
||||
Child->DFSNumIn = num++;
|
||||
workStack.push_back(Child);
|
||||
visitedNodes.insert(Child);
|
||||
}
|
||||
if (!Visited.insert(Child))
|
||||
continue;
|
||||
|
||||
visitChild = true;
|
||||
Child->DFSNumIn = num++;
|
||||
workStack.push_back(Child);
|
||||
}
|
||||
if (!visitChild) {
|
||||
// If we reach here means all children are visited
|
||||
|
Loading…
x
Reference in New Issue
Block a user