summaryrefslogtreecommitdiff
path: root/src/passes/CoalesceLocals.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/CoalesceLocals.cpp')
-rw-r--r--src/passes/CoalesceLocals.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/passes/CoalesceLocals.cpp b/src/passes/CoalesceLocals.cpp
index 46885058f..503b7ad2a 100644
--- a/src/passes/CoalesceLocals.cpp
+++ b/src/passes/CoalesceLocals.cpp
@@ -438,13 +438,13 @@ void CoalesceLocals::pickIndicesFromOrder(std::vector<Index>& order, std::vector
indices.resize(numLocals);
types.resize(numLocals);
newInterferences.resize(numLocals * numLocals);
- newCopies.resize(numLocals * numLocals);
std::fill(newInterferences.begin(), newInterferences.end(), 0);
+ auto numParams = getFunction()->getNumParams();
+ newCopies.resize(numLocals * numLocals);
std::fill(newCopies.begin(), newCopies.end(), 0);
Index nextFree = 0;
removedCopies = 0;
// we can't reorder parameters, they are fixed in order, and cannot coalesce
- auto numParams = getFunction()->getNumParams();
Index i = 0;
for (; i < numParams; i++) {
assert(order[i] == i); // order must leave the params in place
@@ -475,7 +475,7 @@ void CoalesceLocals::pickIndicesFromOrder(std::vector<Index>& order, std::vector
indices[actual] = found = nextFree;
types[found] = getFunction()->getLocalType(actual);
nextFree++;
- removedCopies += newCopies[found * numLocals + actual];
+ removedCopies += getCopies(found, actual);
} else {
removedCopies += foundCopies;
}