summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-19 14:12:04 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-19 14:12:04 -0800
commit3205dc9c54e49d4bc57c9cbfcb9163407b097580 (patch)
tree7bafa53109227e72f68ebbf627b7401efeb50927 /src
parent6422258ee076d29bdb611d32268afbe692c59bc4 (diff)
downloadbinaryen-3205dc9c54e49d4bc57c9cbfcb9163407b097580.tar.gz
binaryen-3205dc9c54e49d4bc57c9cbfcb9163407b097580.tar.bz2
binaryen-3205dc9c54e49d4bc57c9cbfcb9163407b097580.zip
ensure a stable sort in ReorderLocals
Diffstat (limited to 'src')
-rw-r--r--src/passes/ReorderLocals.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/passes/ReorderLocals.cpp b/src/passes/ReorderLocals.cpp
index 80256e24d..1b5e998c4 100644
--- a/src/passes/ReorderLocals.cpp
+++ b/src/passes/ReorderLocals.cpp
@@ -32,7 +32,10 @@ struct ReorderLocals : public WalkerPass<WasmWalker<ReorderLocals, void>> {
void visitFunction(Function *curr) {
sort(curr->locals.begin(), curr->locals.end(), [this](NameType a, NameType b) -> bool {
- return this->counts[a.name] > this->counts[b.name];
+ if (this->counts[a.name] == this->counts[b.name]) {
+ return strcmp(a.name.str, b.name.str) > 0;
+ }
+ return this->counts[a.name] > this->counts[b.name];
});
counts.clear();
}