Skip to content

Commit

Permalink
math: adjust compilation flags, use them when testing
Browse files Browse the repository at this point in the history
    
    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


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257312 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
ian committed Feb 1, 2018
1 parent d835b8f commit ff60d2b
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 13 deletions.
1 change: 1 addition & 0 deletions libgo/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions libgo/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions libgo/configure
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 3 additions & 5 deletions libgo/configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
10 changes: 5 additions & 5 deletions libgo/go/math/all_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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])
}
}
Expand Down Expand Up @@ -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])
}
}
Expand Down Expand Up @@ -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])
}
}
Expand Down

0 comments on commit ff60d2b

Please sign in to comment.