diff options
author | Alon Zakai <alonzakai@gmail.com> | 2017-07-12 11:37:10 -0700 |
---|---|---|
committer | Alon Zakai (kripken) <alonzakai@gmail.com> | 2017-07-13 11:54:03 -0700 |
commit | f755250db869781db4206eee8db00c8060ac398b (patch) | |
tree | 79438c54ab0857c9d0a706b1a7a0cbe86e40802b /src | |
parent | b85e8b51464d0ea1d76d08c2a1b53648e9b7ed9c (diff) | |
download | binaryen-f755250db869781db4206eee8db00c8060ac398b.tar.gz binaryen-f755250db869781db4206eee8db00c8060ac398b.tar.bz2 binaryen-f755250db869781db4206eee8db00c8060ac398b.zip |
optimize shifts of 0
Diffstat (limited to 'src')
-rw-r--r-- | src/passes/OptimizeInstructions.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp index d1b419a06..c6006d712 100644 --- a/src/passes/OptimizeInstructions.cpp +++ b/src/passes/OptimizeInstructions.cpp @@ -517,6 +517,12 @@ struct OptimizeInstructions : public WalkerPass<PostWalker<OptimizeInstructions, } } } + // some operations have no effect TODO: many more + if (right->value == Literal(int32_t(0))) { + if (binary->op == ShlInt32 || binary->op == ShrUInt32 || binary->op == ShrSInt32) { + return binary->left; + } + } // the square of some operations can be merged if (auto* left = binary->left->dynCast<Binary>()) { if (left->op == binary->op) { |