summaryrefslogtreecommitdiff
path: root/src/passes/RemoveNonJSOps.cpp
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2021-05-18 15:58:31 -0700
committerGitHub <noreply@github.com>2021-05-18 15:58:31 -0700
commit92b0cbdd9e2747c5cf6ecc546718d0ec0b1bc64b (patch)
tree988bdc1753ba73f41b7c2c5613170fa638a1e5f9 /src/passes/RemoveNonJSOps.cpp
parentf8bb9c228446998882edea012bf9fa3004262504 (diff)
downloadbinaryen-92b0cbdd9e2747c5cf6ecc546718d0ec0b1bc64b.tar.gz
binaryen-92b0cbdd9e2747c5cf6ecc546718d0ec0b1bc64b.tar.bz2
binaryen-92b0cbdd9e2747c5cf6ecc546718d0ec0b1bc64b.zip
Remove Type ordering (#3793)
As found in #3682, the current implementation of type ordering is not correct, and although the immediate issue would be easy to fix, I don't think the current intended comparison algorithm is correct in the first place. Rather than try to switch to using a correct algorithm (which I am not sure I know how to implement, although I have an idea) this PR removes Type ordering entirely. In places that used Type ordering with std::set or std::map because they require deterministic iteration order, this PR uses InsertOrdered{Set,Map} instead.
Diffstat (limited to 'src/passes/RemoveNonJSOps.cpp')
-rw-r--r--src/passes/RemoveNonJSOps.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/passes/RemoveNonJSOps.cpp b/src/passes/RemoveNonJSOps.cpp
index 08e6e6482..7c0a0e2ce 100644
--- a/src/passes/RemoveNonJSOps.cpp
+++ b/src/passes/RemoveNonJSOps.cpp
@@ -43,6 +43,7 @@
#include "ir/memory-utils.h"
#include "ir/module-utils.h"
#include "passes/intrinsics-module.h"
+#include "support/insert_ordered.h"
#include "wasm-builder.h"
#include "wasm-s-parser.h"
@@ -51,7 +52,7 @@ namespace wasm {
struct RemoveNonJSOpsPass : public WalkerPass<PostWalker<RemoveNonJSOpsPass>> {
std::unique_ptr<Builder> builder;
std::unordered_set<Name> neededIntrinsics;
- std::set<std::pair<Name, Type>> neededImportedGlobals;
+ InsertOrderedSet<std::pair<Name, Type>> neededImportedGlobals;
bool isFunctionParallel() override { return false; }