summaryrefslogtreecommitdiff
path: root/src/passes/SimplifyGlobals.cpp
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2020-04-12 12:49:29 -0700
committerGitHub <noreply@github.com>2020-04-12 12:49:29 -0700
commit53c70d9ccd56d9d28eb65ccc5954024b6b0e921b (patch)
tree4c2fd773cadc3329bc900662a5a2261d416ee112 /src/passes/SimplifyGlobals.cpp
parent69aa3893b189369f9a8f94384eb4a913f17fd57f (diff)
downloadbinaryen-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.cpp8
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