diff options
author | Alon Zakai <alonzakai@gmail.com> | 2017-08-01 15:42:24 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2017-08-01 15:42:24 -0700 |
commit | 6d686bd1a5b3610ad49fd607ae5e49c70410af51 (patch) | |
tree | 915e18978f4b554d0479b568378a425ec5b042ee /src/passes/OptimizeInstructions.cpp | |
parent | 114ed43b24d3c74112b922a7469c48c736172833 (diff) | |
download | binaryen-6d686bd1a5b3610ad49fd607ae5e49c70410af51.tar.gz binaryen-6d686bd1a5b3610ad49fd607ae5e49c70410af51.tar.bz2 binaryen-6d686bd1a5b3610ad49fd607ae5e49c70410af51.zip |
fix off-by-one error in clz/ctz/popcount used bits computation
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 578a01f11..f458a58b2 100644 --- a/src/passes/OptimizeInstructions.cpp +++ b/src/passes/OptimizeInstructions.cpp @@ -228,8 +228,8 @@ Index getMaxBits(Expression* curr, LocalInfoProvider* localInfoProvider) { } } else if (auto* unary = curr->dynCast<Unary>()) { switch (unary->op) { - case ClzInt32: case CtzInt32: case PopcntInt32: return 5; - case ClzInt64: case CtzInt64: case PopcntInt64: return 6; + case ClzInt32: case CtzInt32: case PopcntInt32: return 6; + case ClzInt64: case CtzInt64: case PopcntInt64: return 7; case EqZInt32: case EqZInt64: return 1; case WrapInt64: return std::min(Index(32), getMaxBits(unary->value, localInfoProvider)); default: {} |