summaryrefslogtreecommitdiff
path: root/src/passes
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes')
-rw-r--r--src/passes/CoalesceLocals.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/passes/CoalesceLocals.cpp b/src/passes/CoalesceLocals.cpp
index 503b7ad2a..d74500bb5 100644
--- a/src/passes/CoalesceLocals.cpp
+++ b/src/passes/CoalesceLocals.cpp
@@ -440,7 +440,7 @@ void CoalesceLocals::pickIndicesFromOrder(std::vector<Index>& order, std::vector
newInterferences.resize(numLocals * numLocals);
std::fill(newInterferences.begin(), newInterferences.end(), 0);
auto numParams = getFunction()->getNumParams();
- newCopies.resize(numLocals * numLocals);
+ newCopies.resize(numParams * numLocals); // start with enough room for the params
std::fill(newCopies.begin(), newCopies.end(), 0);
Index nextFree = 0;
removedCopies = 0;
@@ -476,6 +476,7 @@ void CoalesceLocals::pickIndicesFromOrder(std::vector<Index>& order, std::vector
types[found] = getFunction()->getLocalType(actual);
nextFree++;
removedCopies += getCopies(found, actual);
+ newCopies.resize(nextFree * numLocals);
} else {
removedCopies += foundCopies;
}