forked from OSchip/llvm-project
Use std::vector<DFCalculateWorkObject> instead of
std::vector<DFCalculateWorkObject *> to reduce malloc/free traffic. llvm-svn: 35368
This commit is contained in:
parent
44a7f3a65d
commit
55566a972c
|
@ -455,13 +455,12 @@ DominanceFrontier::calculate(const DominatorTree &DT,
|
||||||
BasicBlock *BB = Node->getBlock();
|
BasicBlock *BB = Node->getBlock();
|
||||||
DomSetType *Result = NULL;
|
DomSetType *Result = NULL;
|
||||||
|
|
||||||
std::vector<DFCalculateWorkObject *> workList;
|
std::vector<DFCalculateWorkObject> workList;
|
||||||
std::set<BasicBlock *> visited;
|
std::set<BasicBlock *> visited;
|
||||||
|
|
||||||
DFCalculateWorkObject *W = new DFCalculateWorkObject(BB, NULL, Node, NULL);
|
workList.push_back(DFCalculateWorkObject(BB, NULL, Node, NULL));
|
||||||
workList.push_back(W);
|
|
||||||
do {
|
do {
|
||||||
DFCalculateWorkObject *currentW = workList.back();
|
DFCalculateWorkObject *currentW = &workList.back();
|
||||||
assert (currentW && "Missing work object.");
|
assert (currentW && "Missing work object.");
|
||||||
|
|
||||||
BasicBlock *currentBB = currentW->currentBB;
|
BasicBlock *currentBB = currentW->currentBB;
|
||||||
|
@ -494,9 +493,7 @@ DominanceFrontier::calculate(const DominatorTree &DT,
|
||||||
DominatorTree::Node *IDominee = *NI;
|
DominatorTree::Node *IDominee = *NI;
|
||||||
BasicBlock *childBB = IDominee->getBlock();
|
BasicBlock *childBB = IDominee->getBlock();
|
||||||
if (visited.count(childBB) == 0) {
|
if (visited.count(childBB) == 0) {
|
||||||
DFCalculateWorkObject *newW =
|
workList.push_back(DFCalculateWorkObject(childBB, currentBB, IDominee, currentNode));
|
||||||
new DFCalculateWorkObject(childBB, currentBB, IDominee, currentNode);
|
|
||||||
workList.push_back(newW);
|
|
||||||
visitChild = true;
|
visitChild = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue