Index: src/IceCfg.cpp |
diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp |
index 847563cc809654d7e1435d6d7e925d08ce264c92..268240cff525c6cfac317747ab9c45396e0b36e4 100644 |
--- a/src/IceCfg.cpp |
+++ b/src/IceCfg.cpp |
@@ -61,6 +61,12 @@ CfgNode *Cfg::makeNode() { |
return Node; |
} |
+void Cfg::replaceNodes(const NodeList &NewNodes) { |
+ Nodes = NewNodes; |
John
2015/08/06 17:22:54
The CL description mentions "large numbers." So, I
Karl
2015/08/06 18:55:52
Done.
|
+ for (size_t i = 0, sz = Nodes.size(); i < sz; ++i) |
Jim Stichnoth
2015/08/06 17:24:33
for (SizeT I = 0, NumNodes = getNumNodes(); I < Nu
Karl
2015/08/06 18:55:52
Done.
|
+ Nodes[i]->resetIndex(i); |
+} |
+ |
void Cfg::addArg(Variable *Arg) { |
Arg->setIsArg(); |
Args.push_back(Arg); |
@@ -361,14 +367,12 @@ void Cfg::reorderNodes() { |
} |
// Reorder Nodes according to the built-up lists. |
- SizeT OldSize = Nodes.size(); |
- (void)OldSize; |
- Nodes.clear(); |
+ NodeList Reordered; |
John
2015/08/06 17:22:54
Reordered.reserve(Placed.size() + Unreachable.size
Karl
2015/08/06 18:55:52
Done.
|
for (CfgNode *Node : Placed) |
- Nodes.push_back(Node); |
+ Reordered.push_back(Node); |
for (CfgNode *Node : Unreachable) |
- Nodes.push_back(Node); |
- assert(Nodes.size() == OldSize); |
Jim Stichnoth
2015/08/06 17:24:33
Can you preserve the size assert? This is to make
Karl
2015/08/06 18:55:51
Added assert back.
|
+ Reordered.push_back(Node); |
+ replaceNodes(Reordered); |
} |
namespace { |
@@ -403,15 +407,12 @@ void Cfg::shuffleNodes() { |
if (ToVisit[Node->getIndex()]) |
Unreachable.push_back(Node); |
// Copy the layout list to the Nodes. |
- SizeT OldSize = Nodes.size(); |
- (void)OldSize; |
- Nodes.clear(); |
+ NodeList Shuffled; |
for (CfgNode *Node : reverse_range(ReversedReachable)) |
- Nodes.emplace_back(Node); |
- for (CfgNode *Node : Unreachable) { |
- Nodes.emplace_back(Node); |
- } |
- assert(Nodes.size() == OldSize); |
+ Shuffled.push_back(Node); |
+ for (CfgNode *Node : Unreachable) |
+ Shuffled.push_back(Node); |
+ replaceNodes(Shuffled); |
dump("After basic block shuffling"); |
} |