Commit 16687a3b authored by Michael Munday's avatar Michael Munday

cmd/compile: skip float32 constant folding test on 387 builder

The 387 unit always quietens float64 and float32 signaling NaNs,
even when just loading and storing them. This makes it difficult
to propagate such values in the compiler. This is a hard problem
to fix and it is also very obscure.

Updates #27516.

Change-Id: I03d88e31f14c86fa682fcea4b6d1fba18968aee8
Reviewed-on: https://go-review.googlesource.com/135195Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 9f59918c
...@@ -6,6 +6,8 @@ package gc ...@@ -6,6 +6,8 @@ package gc
import ( import (
"math" "math"
"os"
"runtime"
"testing" "testing"
) )
...@@ -364,11 +366,19 @@ func TestFloatConvertFolded(t *testing.T) { ...@@ -364,11 +366,19 @@ func TestFloatConvertFolded(t *testing.T) {
func TestFloat32StoreToLoadConstantFold(t *testing.T) { func TestFloat32StoreToLoadConstantFold(t *testing.T) {
// Test that math.Float32{,from}bits constant fold correctly. // Test that math.Float32{,from}bits constant fold correctly.
// In particular we need to be careful that signalling NaN (sNaN) values // In particular we need to be careful that signaling NaN (sNaN) values
// are not converted to quiet NaN (qNaN) values during compilation. // are not converted to quiet NaN (qNaN) values during compilation.
// See issue #27193 for more information. // See issue #27193 for more information.
// signalling NaNs // TODO: this method for detecting 387 won't work if the compiler has been
// built using GOARCH=386 GO386=387 and either the target is a different
// architecture or the GO386=387 environment variable is not set when the
// test is run.
if runtime.GOARCH == "386" && os.Getenv("GO386") == "387" {
t.Skip("signaling NaNs are not propagated on 387 (issue #27516)")
}
// signaling NaNs
{ {
const nan = uint32(0x7f800001) // sNaN const nan = uint32(0x7f800001) // sNaN
if x := math.Float32bits(math.Float32frombits(nan)); x != nan { if x := math.Float32bits(math.Float32frombits(nan)); x != nan {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment