diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/reflect/all_test.go | 11 | ||||
| -rw-r--r-- | src/reflect/value.go | 14 |
2 files changed, 0 insertions, 25 deletions
diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go index 496d0e9241..00c18104eb 100644 --- a/src/reflect/all_test.go +++ b/src/reflect/all_test.go @@ -4163,17 +4163,6 @@ func TestConvert(t *testing.T) { } } -func TestConvertNaNs(t *testing.T) { - const snan uint32 = 0x7f800001 - type myFloat32 float32 - x := V(myFloat32(math.Float32frombits(snan))) - y := x.Convert(TypeOf(float32(0))) - z := y.Interface().(float32) - if got := math.Float32bits(z); got != snan { - t.Errorf("signaling nan conversion got %x, want %x", got, snan) - } -} - type ComparableStruct struct { X int } diff --git a/src/reflect/value.go b/src/reflect/value.go index d8b5d11cbd..0f5e083663 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -2541,14 +2541,6 @@ func makeFloat(f flag, v float64, t Type) Value { return Value{typ, ptr, f | flagIndir | flag(typ.Kind())} } -// makeFloat returns a Value of type t equal to v, where t is a float32 type. -func makeFloat32(f flag, v float32, t Type) Value { - typ := t.common() - ptr := unsafe_New(typ) - *(*float32)(ptr) = v - return Value{typ, ptr, f | flagIndir | flag(typ.Kind())} -} - // makeComplex returns a Value of type t equal to v (possibly truncated to complex64), // where t is a complex64 or complex128 type. func makeComplex(f flag, v complex128, t Type) Value { @@ -2621,12 +2613,6 @@ func cvtUintFloat(v Value, t Type) Value { // convertOp: floatXX -> floatXX func cvtFloat(v Value, t Type) Value { - if v.Type().Kind() == Float32 && t.Kind() == Float32 { - // Don't do any conversion if both types have underlying type float32. - // This avoids converting to float64 and back, which will - // convert a signaling NaN to a quiet NaN. See issue 36400. - return makeFloat32(v.flag.ro(), *(*float32)(v.ptr), t) - } return makeFloat(v.flag.ro(), v.Float(), t) } |
