diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-09-06 16:44:50 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-09-07 18:42:45 -0700 |
commit | 96ae0dda155b47299245a89e6a68fbb97ccda33f (patch) | |
tree | 7c35ebbca6b575af89c8ca9d1896c252d00e4f7d /src/passes/OptimizeInstructions.cpp | |
parent | 2b98366e3f4787fc8d3d21ba0c01a577b8ea0d66 (diff) | |
download | binaryen-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.cpp | 8 |
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; } |