diff options
author | Alon Zakai (kripken) <alonzakai@gmail.com> | 2017-07-31 14:11:33 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2017-08-01 10:10:36 -0700 |
commit | 04418d5617f6ab7015c5cf7b905b4775a5219f4b (patch) | |
tree | 3b6b75b982702f7cabc777ae7fcc3f1a8dec2392 /src/passes/OptimizeInstructions.cpp | |
parent | 5a07a930ad51003411b2bc827ea9bf08728ecc5a (diff) | |
download | binaryen-04418d5617f6ab7015c5cf7b905b4775a5219f4b.tar.gz binaryen-04418d5617f6ab7015c5cf7b905b4775a5219f4b.tar.bz2 binaryen-04418d5617f6ab7015c5cf7b905b4775a5219f4b.zip |
use effective shifts in more places in optimize-instructions
Diffstat (limited to 'src/passes/OptimizeInstructions.cpp')
-rw-r--r-- | src/passes/OptimizeInstructions.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp index 4fd7cbe8d..578a01f11 100644 --- a/src/passes/OptimizeInstructions.cpp +++ b/src/passes/OptimizeInstructions.cpp @@ -779,7 +779,7 @@ private: return; } else if (binary->op == ShlInt32) { if (auto* c = binary->right->dynCast<Const>()) { - seek(binary->left, mul * Pow2(c->value.geti32())); + seek(binary->left, mul * Pow2(Bits::getEffectiveShifts(c))); return; } } else if (binary->op == MulInt32) { @@ -836,7 +836,7 @@ private: } } else if (curr->op == ShlInt32) { // shifting a 0 is a 0, unless the shift has side effects - if (left && left->value.geti32() == 0 && !EffectAnalyzer(passOptions, curr->right).hasSideEffects()) { + if (left && Bits::getEffectiveShifts(left) == 0 && !EffectAnalyzer(passOptions, curr->right).hasSideEffects()) { replaceCurrent(left); return; } |