diff options
author | Alon Zakai <azakai@google.com> | 2024-02-21 10:55:15 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-21 10:55:15 -0800 |
commit | 30828d4144c3bce2b2547dff3660826fbd7c307b (patch) | |
tree | ba0a5a5a36814ba774577330b05c459f4e77cd95 /src | |
parent | 1441bcbb33a5354432daf1edc4bc3a72d0bd7687 (diff) | |
download | binaryen-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.cpp | 6 |
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); } } |