Index: src/IceLiveness.cpp |
diff --git a/src/IceLiveness.cpp b/src/IceLiveness.cpp |
index 2bfa624d57cf03f5c3855648871e9b30291a7e7f..d9e8e8af37d5808a06908904d8f32c2f67091d73 100644 |
--- a/src/IceLiveness.cpp |
+++ b/src/IceLiveness.cpp |
@@ -106,6 +106,7 @@ void Liveness::initInternal(NodeList::const_iterator FirstNode, |
RangeMask[VarIndex] = false; |
} |
+ SizeT MaxLocals = 0; |
// Process each node. |
for (auto I = FirstNode, E = Func->getNodes().end(); I != E; ++I) { |
LivenessNode &Node = Nodes[(*I)->getIndex()]; |
@@ -113,7 +114,9 @@ void Liveness::initInternal(NodeList::const_iterator FirstNode, |
Node.LiveIn.resize(NumGlobals); |
Node.LiveOut.resize(NumGlobals); |
// LiveBegin and LiveEnd are reinitialized before each pass over the block. |
+ MaxLocals = std::max(MaxLocals, Node.NumLocals); |
} |
+ ScratchBV.reserve(NumGlobals + MaxLocals); |
} |
void Liveness::init() { |