From 63bd6f68e6cbb237b46a99775103758afaee370a Mon Sep 17 00:00:00 2001 From: Roland Shoemaker Date: Sat, 5 Mar 2022 08:47:33 -0800 Subject: [PATCH] internal/fuzz: fix TestUnmarshalMarshal on MIPS Previous value used in the float32 roundtrip used float32(math.NaN())-1 which caused the quiet/signal bit to flip, which seemed to break the test on MIPS platforms. Instead switch to using float32(math.NaN())+1, which preserves the bit and makes the test happy. Possibly related to #37455 Fixes #51258 Change-Id: Ia85c649e89a5d02027c0ec197f0ff318aa819c19 Reviewed-on: https://go-review.googlesource.com/c/go/+/390214 Trust: Dmitri Shuralyov Reviewed-by: Bryan Mills Trust: Roland Shoemaker Run-TryBot: Roland Shoemaker TryBot-Result: Gopher Robot --- src/internal/fuzz/encoding_test.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/internal/fuzz/encoding_test.go b/src/internal/fuzz/encoding_test.go index 4b55892acd..3a614f5bd2 100644 --- a/src/internal/fuzz/encoding_test.go +++ b/src/internal/fuzz/encoding_test.go @@ -104,6 +104,12 @@ float32(2.5)`, ok: true, }, { + // The two IEEE 754 bit patterns used for the math.Float{64,32}frombits + // encodings are non-math.NAN quiet-NaN values. Since they are not equal + // to math.NaN(), they should be re-encoded to their bit patterns. They + // are, respectively: + // * math.Float64bits(math.NaN())+1 + // * math.Float32bits(float32(math.NaN()))+1 in: `go test fuzz v1 float32(-0) float64(-0) @@ -113,8 +119,8 @@ float32(NaN) float64(+Inf) float64(-Inf) float64(NaN) -math.Float64frombits(9221120237041090560) -math.Float32frombits(2143289343)`, +math.Float64frombits(9221120237041090562) +math.Float32frombits(2143289345)`, ok: true, }, } -- 2.48.1