diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-02-19 14:12:04 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-02-19 14:12:04 -0800 |
commit | 3205dc9c54e49d4bc57c9cbfcb9163407b097580 (patch) | |
tree | 7bafa53109227e72f68ebbf627b7401efeb50927 /src | |
parent | 6422258ee076d29bdb611d32268afbe692c59bc4 (diff) | |
download | binaryen-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.cpp | 5 |
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(); } |