mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-14 15:20:04 +00:00
87faac5516
For soft-float powerpc, fmaxmagl and fminmagl generate spurious "invalid" exceptions for quiet NaN arguments. This is another case of the problems with fabsl inline expansion via comparisons, and so is fixed by building those functions with -fno-builtin-fabsl. Tested for powerpc (soft-float). [BZ #22691] * sysdeps/powerpc/nofpu/Makefile [$(subdir) = math] (CFLAGS-s_fmaxmagl.c): New variable. [$(subdir) = math] (CFLAGS-s_fminmagl.c: Likewise.
53 lines
2.2 KiB
Makefile
53 lines
2.2 KiB
Makefile
# Makefile fragment for PowerPC with no FPU.
|
|
|
|
ifeq ($(subdir),soft-fp)
|
|
sysdep_routines += $(gcc-single-routines) $(gcc-double-routines) \
|
|
sim-full atomic-feholdexcept atomic-feclearexcept \
|
|
atomic-feupdateenv flt-rounds
|
|
endif
|
|
|
|
ifeq ($(subdir),math)
|
|
libm-support += fenv_const
|
|
CPPFLAGS += -I../soft-fp/
|
|
# The follow CFLAGS are a work around for GCC Bugzilla Bug 29253
|
|
# "expand_abs wrong default code for floating point"
|
|
# As this is not a regression, a fix is not likely to go into
|
|
# gcc-4.1.1 and may be too late for gcc-4.2. So we need these flags
|
|
# until the fix in a gcc release and glibc drops support for earlier
|
|
# versions of gcc.
|
|
#
|
|
# This bug can cause wrong signs of zero results from fabsl, and
|
|
# spurious "invalid" exceptions from comparisons with NaN in the
|
|
# default code sequence generated. The fpclassify expansion used by
|
|
# __builtin_fpclassify, which is used in the absence of
|
|
# -fsignaling-nans, uses __builtin_fabsl, and is not affected by
|
|
# -fno-builtin-fabsl, so requiring -fsignaling-nans for some affected
|
|
# source files.
|
|
CFLAGS-e_atan2l.c += -fno-builtin-fabsl
|
|
CFLAGS-e_hypotl.c += -fno-builtin-fabsl
|
|
CFLAGS-e_powl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_cacosl.c += -fsignaling-nans
|
|
CFLAGS-s_cacoshl.c += -fsignaling-nans
|
|
CFLAGS-s_casinhl.c += -fsignaling-nans
|
|
CFLAGS-s_catanl.c += -fsignaling-nans
|
|
CFLAGS-s_catanhl.c += -fsignaling-nans
|
|
CFLAGS-s_ccoshl.c += -fno-builtin-fabsl -fsignaling-nans
|
|
CFLAGS-s_cexpl.c += -fsignaling-nans
|
|
CFLAGS-s_csinhl.c += -fno-builtin-fabsl -fsignaling-nans
|
|
CFLAGS-s_clogl.c += -fno-builtin-fabsl -fsignaling-nans
|
|
CFLAGS-s_clog10l.c += -fno-builtin-fabsl -fsignaling-nans
|
|
CFLAGS-s_csinl.c += -fno-builtin-fabsl -fsignaling-nans
|
|
CFLAGS-s_csqrtl.c += -fno-builtin-fabsl -fsignaling-nans
|
|
CFLAGS-w_acosl_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_asinl_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_atanhl_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_j0l_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-w_j1l_compat.c += -fno-builtin-fabsl
|
|
CFLAGS-e_lgammal_r.c += -fno-builtin-fabsl
|
|
CFLAGS-e_log10l.c += -fno-builtin-fabsl
|
|
CFLAGS-e_log2l.c += -fno-builtin-fabsl
|
|
CFLAGS-e_remainderl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fmaxmagl.c += -fno-builtin-fabsl
|
|
CFLAGS-s_fminmagl.c += -fno-builtin-fabsl
|
|
endif
|