summaryrefslogtreecommitdiff
path: root/src/passes/ReorderLocals.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-05-05 11:47:54 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-05-05 11:47:54 -0700
commitbb3dbb2784e91a517916f366e710e01a2e7331f6 (patch)
tree08ee1e92384235c2f830b65ba7a12c59689d1b88 /src/passes/ReorderLocals.cpp
parentf85e310924535da09822f3d43aeee9265eb12760 (diff)
parentbbf846554a407e0385f91f5b7eeb9594c12e0bc5 (diff)
downloadbinaryen-bb3dbb2784e91a517916f366e710e01a2e7331f6.tar.gz
binaryen-bb3dbb2784e91a517916f366e710e01a2e7331f6.tar.bz2
binaryen-bb3dbb2784e91a517916f366e710e01a2e7331f6.zip
Merge pull request #435 from WebAssembly/more-relooper
Add optimization to C API, and with that, more relooper tests
Diffstat (limited to 'src/passes/ReorderLocals.cpp')
-rw-r--r--src/passes/ReorderLocals.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/passes/ReorderLocals.cpp b/src/passes/ReorderLocals.cpp
index 1a3fbf09a..0e626e0a2 100644
--- a/src/passes/ReorderLocals.cpp
+++ b/src/passes/ReorderLocals.cpp
@@ -106,8 +106,11 @@ struct ReorderLocals : public WalkerPass<PostWalker<ReorderLocals, Visitor<Reord
curr->localNames.resize(newToOld.size());
curr->localIndices.clear();
for (size_t i = 0; i < newToOld.size(); i++) {
- curr->localNames[i] = oldLocalNames[newToOld[i]];
- curr->localIndices[oldLocalNames[newToOld[i]]] = i;
+ if (newToOld[i] < oldLocalNames.size()) {
+ auto old = oldLocalNames[newToOld[i]];
+ curr->localNames[i] = old;
+ curr->localIndices[old] = i;
+ }
}
}