summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2024-02-21 10:55:15 -0800
committerGitHub <noreply@github.com>2024-02-21 10:55:15 -0800
commit30828d4144c3bce2b2547dff3660826fbd7c307b (patch)
treeba0a5a5a36814ba774577330b05c459f4e77cd95 /src
parent1441bcbb33a5354432daf1edc4bc3a72d0bd7687 (diff)
downloadbinaryen-30828d4144c3bce2b2547dff3660826fbd7c307b.tar.gz
binaryen-30828d4144c3bce2b2547dff3660826fbd7c307b.tar.bz2
binaryen-30828d4144c3bce2b2547dff3660826fbd7c307b.zip
[NFC] DeNaN: Avoid calls on constants (#6326)
A constant is either fixed up immediately, or does not need a call. This makes us slightly faster in the fuzzer, but does not change behavior as before those calls all ended up doing nothing (as the numbers were not nans).
Diffstat (limited to 'src')
-rw-r--r--src/passes/DeNaN.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/passes/DeNaN.cpp b/src/passes/DeNaN.cpp
index b0bd5fb60..0251a0c58 100644
--- a/src/passes/DeNaN.cpp
+++ b/src/passes/DeNaN.cpp
@@ -58,20 +58,20 @@ struct DeNaN : public WalkerPass<
if (expr->type == Type::f32) {
if (c && c->value.isNaN()) {
replacement = builder.makeConst(float(0));
- } else {
+ } else if (!c) {
replacement = builder.makeCall(deNan32, {expr}, Type::f32);
}
} else if (expr->type == Type::f64) {
if (c && c->value.isNaN()) {
replacement = builder.makeConst(double(0));
- } else {
+ } else if (!c) {
replacement = builder.makeCall(deNan64, {expr}, Type::f64);
}
} else if (expr->type == Type::v128) {
if (c && hasNaNLane(c)) {
uint8_t zero[16] = {};
replacement = builder.makeConst(Literal(zero));
- } else {
+ } else if (!c) {
replacement = builder.makeCall(deNan128, {expr}, Type::v128);
}
}