diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-01-09 22:34:35 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2018-01-09 22:34:35 +0000 |
commit | e134ca175318e0f1c04b4e857f38efae091c35ce (patch) | |
tree | 5d4d40fd1f09333f79901108038d670fdcf5ee32 /sysdeps/mips/include | |
parent | 311ba8dc4416467947eff2ab327854f124226309 (diff) | |
download | glibc-e134ca175318e0f1c04b4e857f38efae091c35ce.zip glibc-e134ca175318e0f1c04b4e857f38efae091c35ce.tar.gz glibc-e134ca175318e0f1c04b4e857f38efae091c35ce.tar.bz2 |
Fix powerpc-nofpu complex long double functions spurious "invalid" exception (bug 22687).
For soft-float powerpc, various _Complex long double functions
generate spurious "invalid" exceptions, even with a compiler with GCC
bug 64811 fixed.
The problem is GCC's built-in fabsl expansion. Various files are
already built with -fno-builtin-fabsl because in this case (IBM long
double, for soft-float or e500v1) a fallback fabsl expansion based on
comparisons is used, which can produce the wrong sign of a zero
result. Those comparisons can also produce spurious exceptions for
NaN arguments. Furthermore, __builtin_fpclassify implemently uses
__builtin_fabsl, and is unaffected by -fno-builtin-fabsl, and the
fpclassify macro uses __builtin_fpclassify in the absence of
-fsignaling-nans. Thus, this patch arranges for the problem files
using fpclassify to be built with -fsignaling-nans in this case, to
avoid spurious exceptions from fpclassify.
Tested for powerpc (soft-float).
[BZ #22687]
* sysdeps/powerpc/nofpu/Makefile (CFLAGS-s_cacosl.c): New
variable.
(CFLAGS-s_cacoshl.c): Likewise.
(CFLAGS-s_casinhl.c): Likewise.
(CFLAGS-s_catanl.c): Likewise.
(CFLAGS-s_catanhl.c): Likewise.
(CFLAGS-s_cexpl.c): Likewise.
(CFLAGS-s_ccoshl.c): Add -fsignaling-nans.
(CFLAGS-s_csinhl.c): Likewise.
(CFLAGS-s_clogl.c): Likewise.
(CFLAGS-s_clog10l.c): Likewise.
(CFLAGS-s_csinl.c): Likewise.
(CFLAGS-s_csqrtl.c): Likewise.
Diffstat (limited to 'sysdeps/mips/include')
0 files changed, 0 insertions, 0 deletions