summaryrefslogtreecommitdiff
path: root/src/passes/OptimizeInstructions.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-09-06 16:44:50 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-09-07 18:42:45 -0700
commit96ae0dda155b47299245a89e6a68fbb97ccda33f (patch)
tree7c35ebbca6b575af89c8ca9d1896c252d00e4f7d /src/passes/OptimizeInstructions.cpp
parent2b98366e3f4787fc8d3d21ba0c01a577b8ea0d66 (diff)
downloadbinaryen-96ae0dda155b47299245a89e6a68fbb97ccda33f.tar.gz
binaryen-96ae0dda155b47299245a89e6a68fbb97ccda33f.tar.bz2
binaryen-96ae0dda155b47299245a89e6a68fbb97ccda33f.zip
optimize out a set of a get of a global
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;
}