diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-02-01 21:05:20 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-02-01 21:05:20 +0000 |
commit | 28f3c8143b2f7e6178e5baaf81d15c65cbe6f06b (patch) | |
tree | 22f2408010d680c87c037ebf561a741ac3f31c12 /libgo | |
parent | d15f0fa7f9b7bc2eabb29429a7ca8556a3272625 (diff) | |
download | gcc-28f3c8143b2f7e6178e5baaf81d15c65cbe6f06b.zip gcc-28f3c8143b2f7e6178e5baaf81d15c65cbe6f06b.tar.gz gcc-28f3c8143b2f7e6178e5baaf81d15c65cbe6f06b.tar.bz2 |
math: adjust compilation flags, use them when testing
We were using special compilation flags for the math package, but we
weren't using them when testing. That meant that our tests were not
checking the real code we were providing. Fix that.
Fixing that revealed that we were not using a good set of flags, or at
least were not using flags that let the tests pass. Adjust the flags
to stop using -funsafe-math-optimizations on x86. Instead always use
-ffp-contract=off -fno-math-errno -fno-trapping-math for all targets.
Fixes golang/go#23647
Reviewed-on: https://go-review.googlesource.com/91355
From-SVN: r257312
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/Makefile.am | 1 | ||||
-rw-r--r-- | libgo/Makefile.in | 1 | ||||
-rwxr-xr-x | libgo/configure | 5 | ||||
-rw-r--r-- | libgo/configure.ac | 8 | ||||
-rw-r--r-- | libgo/go/math/all_test.go | 10 |
5 files changed, 12 insertions, 13 deletions
diff --git a/libgo/Makefile.am b/libgo/Makefile.am index 88be5db..531f8f0 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -1138,6 +1138,7 @@ $(foreach package,$(GOTOOL_PACKAGES),$(eval $(call PACKAGE_template,$(package))) # Pass -ffp-contract=off, or 386-specific options, when building the # math package. MATH_FLAG is defined in configure.ac. math_lo_GOCFLAGS = $(MATH_FLAG) +math_check_GOCFLAGS = $(MATH_FLAG) # Add the generated file runtime_sysinfo.go to the runtime package. extra_go_files_runtime = runtime_sysinfo.go sigtab.go diff --git a/libgo/Makefile.in b/libgo/Makefile.in index 471a047..fbca83e 100644 --- a/libgo/Makefile.in +++ b/libgo/Makefile.in @@ -1175,6 +1175,7 @@ CHECK_DEPS = $(toolexeclibgo_DATA) $(toolexeclibgoarchive_DATA) \ # Pass -ffp-contract=off, or 386-specific options, when building the # math package. MATH_FLAG is defined in configure.ac. math_lo_GOCFLAGS = $(MATH_FLAG) +math_check_GOCFLAGS = $(MATH_FLAG) # Add the generated file runtime_sysinfo.go to the runtime package. extra_go_files_runtime = runtime_sysinfo.go sigtab.go diff --git a/libgo/configure b/libgo/configure index d0550c3..aba4dc3 100755 --- a/libgo/configure +++ b/libgo/configure @@ -15076,10 +15076,9 @@ fi $as_echo "$libgo_cv_c_fancymath" >&6; } MATH_FLAG= if test "$libgo_cv_c_fancymath" = yes; then - MATH_FLAG="-mfancy-math-387 -funsafe-math-optimizations -fno-math-errno" -else - MATH_FLAG="-ffp-contract=off" + MATH_FLAG="-mfancy-math-387" fi +MATH_FLAG="${MATH_FLAG} -ffp-contract=off -fno-math-errno -fno-trapping-math" CFLAGS_hold=$CFLAGS diff --git a/libgo/configure.ac b/libgo/configure.ac index c497e78..1264a1d 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -649,8 +649,7 @@ fi AC_SUBST(STRINGOPS_FLAG) dnl For x86 we want to compile the math library with -mfancy-math-387 -dnl -funsafe-math-optimizations so that we can use the builtin -dnl instructions directly. +dnl so that we can use the builtin instructions directly. AC_CACHE_CHECK([whether compiler supports -mfancy-math-387], [libgo_cv_c_fancymath], [CFLAGS_hold=$CFLAGS @@ -661,10 +660,9 @@ AC_COMPILE_IFELSE([int i;], CFLAGS=$CFLAGS_hold]) MATH_FLAG= if test "$libgo_cv_c_fancymath" = yes; then - MATH_FLAG="-mfancy-math-387 -funsafe-math-optimizations -fno-math-errno" -else - MATH_FLAG="-ffp-contract=off" + MATH_FLAG="-mfancy-math-387" fi +MATH_FLAG="${MATH_FLAG} -ffp-contract=off -fno-math-errno -fno-trapping-math" AC_SUBST(MATH_FLAG) CFLAGS_hold=$CFLAGS diff --git a/libgo/go/math/all_test.go b/libgo/go/math/all_test.go index 6682395..98437b0 100644 --- a/libgo/go/math/all_test.go +++ b/libgo/go/math/all_test.go @@ -128,7 +128,7 @@ var cbrt = []float64{ var ceil = []float64{ 5.0000000000000000e+00, 8.0000000000000000e+00, - 0.0000000000000000e+00, + Copysign(0, -1), -5.0000000000000000e+00, 1.0000000000000000e+01, 3.0000000000000000e+00, @@ -644,7 +644,7 @@ var tanh = []float64{ var trunc = []float64{ 4.0000000000000000e+00, 7.0000000000000000e+00, - -0.0000000000000000e+00, + Copysign(0, -1), -5.0000000000000000e+00, 9.0000000000000000e+00, 2.0000000000000000e+00, @@ -2134,7 +2134,7 @@ func TestCbrt(t *testing.T) { func TestCeil(t *testing.T) { for i := 0; i < len(vf); i++ { - if f := Ceil(vf[i]); ceil[i] != f { + if f := Ceil(vf[i]); !alike(ceil[i], f) { t.Errorf("Ceil(%g) = %g, want %g", vf[i], f, ceil[i]) } } @@ -2361,7 +2361,7 @@ func TestDim(t *testing.T) { func TestFloor(t *testing.T) { for i := 0; i < len(vf); i++ { - if f := Floor(vf[i]); floor[i] != f { + if f := Floor(vf[i]); !alike(floor[i], f) { t.Errorf("Floor(%g) = %g, want %g", vf[i], f, floor[i]) } } @@ -2884,7 +2884,7 @@ func TestTanh(t *testing.T) { func TestTrunc(t *testing.T) { for i := 0; i < len(vf); i++ { - if f := Trunc(vf[i]); trunc[i] != f { + if f := Trunc(vf[i]); !alike(trunc[i], f) { t.Errorf("Trunc(%g) = %g, want %g", vf[i], f, trunc[i]) } } |