summaryrefslogtreecommitdiff
path: root/src/passes/OptimizeInstructions.cpp
diff options
context:
space:
mode:
authorAlon Zakai (kripken) <alonzakai@gmail.com>2017-02-11 13:20:35 -0800
committerAlon Zakai (kripken) <alonzakai@gmail.com>2017-02-16 22:45:36 -0800
commitf57637d7164d8a6369d2ba281559b8d3cef7bd33 (patch)
treecfd3db06a89e5db055f6c55782485db43542dd0c /src/passes/OptimizeInstructions.cpp
parent51d57932a34dd265a8c3c35a6773387e5dd7bc9e (diff)
downloadbinaryen-f57637d7164d8a6369d2ba281559b8d3cef7bd33.tar.gz
binaryen-f57637d7164d8a6369d2ba281559b8d3cef7bd33.tar.bz2
binaryen-f57637d7164d8a6369d2ba281559b8d3cef7bd33.zip
optimize sign-extends to a boolean
Diffstat (limited to 'src/passes/OptimizeInstructions.cpp')
-rw-r--r--src/passes/OptimizeInstructions.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp
index 561e7882c..51fb67065 100644
--- a/src/passes/OptimizeInstructions.cpp
+++ b/src/passes/OptimizeInstructions.cpp
@@ -561,6 +561,10 @@ private:
}
}
}
+ if (auto* ext = getSignExt(binary)) {
+ // use a cheaper zero-extent, we just care about the boolean value anyhow
+ return makeZeroExt(ext, getSignExtBits(binary));
+ }
} else if (auto* block = boolean->dynCast<Block>()) {
if (block->type == i32 && block->list.size() > 0) {
block->list.back() = optimizeBoolean(block->list.back());