diff options
author | Alon Zakai <azakai@google.com> | 2020-04-12 12:49:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-12 12:49:29 -0700 |
commit | 53c70d9ccd56d9d28eb65ccc5954024b6b0e921b (patch) | |
tree | 4c2fd773cadc3329bc900662a5a2261d416ee112 /src/passes/SimplifyGlobals.cpp | |
parent | 69aa3893b189369f9a8f94384eb4a913f17fd57f (diff) | |
download | binaryen-53c70d9ccd56d9d28eb65ccc5954024b6b0e921b.tar.gz binaryen-53c70d9ccd56d9d28eb65ccc5954024b6b0e921b.tar.bz2 binaryen-53c70d9ccd56d9d28eb65ccc5954024b6b0e921b.zip |
Fuzz fix for SimplifyGlobals nopping (#2750)
We shouldn't actually nop, we forgot that the value may have
side effects, so just drop it (opts will remove it later, if possible).
Diffstat (limited to 'src/passes/SimplifyGlobals.cpp')
-rw-r--r-- | src/passes/SimplifyGlobals.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/passes/SimplifyGlobals.cpp b/src/passes/SimplifyGlobals.cpp index a8012aa44..361e0bb61 100644 --- a/src/passes/SimplifyGlobals.cpp +++ b/src/passes/SimplifyGlobals.cpp @@ -178,13 +178,13 @@ struct GlobalSetRemover : public WalkerPass<PostWalker<GlobalSetRemover>> { void visitGlobalSet(GlobalSet* curr) { if (toRemove->count(curr->name) != 0) { - ExpressionManipulator::nop(curr); - nopped = true; + replaceCurrent(Builder(*getModule()).makeDrop(curr->value)); + removed = true; } } void visitFunction(Function* curr) { - if (nopped && optimize) { + if (removed && optimize) { PassRunner runner(getModule(), getPassRunner()->options); runner.setIsNested(true); runner.addDefaultFunctionOptimizationPasses(); @@ -195,7 +195,7 @@ struct GlobalSetRemover : public WalkerPass<PostWalker<GlobalSetRemover>> { private: const NameSet* toRemove; bool optimize; - bool nopped = false; + bool removed = false; }; } // anonymous namespace |