mirror of git://sourceware.org/git/glibc.git
aarch64: Fix f{max,min}{f} build for GCC 4.9 and 5
GCC 4.9 and 5 do not generate a correct f{max,min}nm instruction for
__builtin_{fmax,fmin}{f} without -ffinite-math-only. It is clear a
compiler issue since the instruction can handle NaN and Inf correctly
and GCC6+ does not show this issue.
We can backport a fix to GCC 5, raise the minimum required GCC version
for aarch64 (since GCC 4.9 branch is now closed [1]) and/or add
configure check to check for this issue. However I think
-ffinite-math-only should be safe for these specific implementations
and it is a simpler solution.
Checked on aarch64-linux-gnu with GCC 5.3.1.
* sysdeps/aarch64/fpu/Makefile (CFLAGS-s_fmax.c, CFLAGS-s_fmaxf.c,
CFLAGS-s_fmin.c, CFLAGS-s_fminf.c): New rule: add -ffinite-math-only.
[1] https://gcc.gnu.org/ml/gcc/2016-08/msg00010.html
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
This commit is contained in:
parent
6a6aa1f389
commit
58a813bf6e
|
|
@ -1,3 +1,8 @@
|
|||
2017-11-16 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/fpu/Makefile (CFLAGS-s_fmax.c, CFLAGS-s_fmaxf.c,
|
||||
CFLAGS-s_fmin.c, CFLAGS-s_fminf.c): New rule: add -ffinite-math-only.
|
||||
|
||||
2017-11-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/net/if_arp.h (ARPHRD_RAWIP): New macro.
|
||||
|
|
|
|||
|
|
@ -5,4 +5,10 @@ CFLAGS-s_lroundf.c += -fno-math-errno
|
|||
CFLAGS-s_lround.c += -fno-math-errno
|
||||
CFLAGS-s_llroundf.c += -fno-math-errno
|
||||
CFLAGS-s_llround.c += -fno-math-errno
|
||||
# GCC 4.9 and 5 requires the flag to correct emits a f{max,min}nm
|
||||
# for a __builtin_{fmax,fmin}{f}.
|
||||
CFLAGS-s_fmax.c += -ffinite-math-only
|
||||
CFLAGS-s_fmaxf.c += -ffinite-math-only
|
||||
CFLAGS-s_fmin.c += -ffinite-math-only
|
||||
CFLAGS-s_fminf.c += -ffinite-math-only
|
||||
endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue