summaryrefslogtreecommitdiff
path: root/src/passes/OptimizeInstructions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/OptimizeInstructions.cpp')
-rw-r--r--src/passes/OptimizeInstructions.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp
index 003d2ff60..2315b9e8e 100644
--- a/src/passes/OptimizeInstructions.cpp
+++ b/src/passes/OptimizeInstructions.cpp
@@ -24,6 +24,7 @@
#include <pass.h>
#include <wasm-s-parser.h>
#include <support/threads.h>
+#include <ast_utils.h>
namespace wasm {
@@ -208,6 +209,13 @@ struct OptimizeInstructions : public WalkerPass<PostWalker<OptimizeInstructions,
}
}
}
+ } else if (auto* set = curr->dynCast<SetGlobal>()) {
+ // optimize out a set of a get
+ auto* get = set->value->dynCast<GetGlobal>();
+ if (get && get->name == set->name) {
+ ExpressionManipulator::nop(curr);
+ return curr;
+ }
}
return nullptr;
}