@@ -, +, @@ -fno-trapping-math --- math/Makefile | 8 ++++++++ sysdeps/x86_64/fpu/multiarch/Makefile | 17 +++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) --- a/math/Makefile +++ a/math/Makefile @@ -1754,10 +1754,18 @@ CFLAGS-s_ynf.c += -fno-builtin-ynf32 # These files quiet sNaNs in a way that is optimized away without # -fsignaling-nans. +ifneq (yes,$(use-builtins-trunc)) CFLAGS-s_modf.c += $(config-cflags-signaling-nans) +endif +ifneq (yes,$(use-builtins-truncf)) CFLAGS-s_modff.c += $(config-cflags-signaling-nans) +endif +ifneq (yes,$(use-builtins-truncfl)) CFLAGS-s_modfl.c += $(config-cflags-signaling-nans) +endif +ifneq (yes,$(use-builtins-truncf128)) CFLAGS-s_modff128.c += $(config-cflags-signaling-nans) +endif $(addprefix $(objpfx),\ $(filter-out $(tests-static) $(libm-tests-vector),\ --- a/sysdeps/x86_64/fpu/multiarch/Makefile +++ a/sysdeps/x86_64/fpu/multiarch/Makefile @@ -50,6 +50,12 @@ libm-sysdep_routines += \ s_trunc-avx \ s_truncf-avx \ # libm-sysdep_routines + +# Don't add -fsignaling-nans for ISA level is 3 or above. +use-builtins-trunc = yes +use-builtins-truncf = yes +CFLAGS-s_modf.c = -fno-trapping-math +CFLAGS-s_modff.c = -fno-trapping-math else sysdep_calls += \ s_modf-avx \ @@ -158,11 +164,14 @@ CFLAGS-s_sin-avx.c = -msse2avx -DSSE2AVX CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX CFLAGS-s_sincos-avx.c = -msse2avx -DSSE2AVX -CFLAGS-s_modf-sse4_1.c = -msse4.1 -fno-builtin-modff32x -fno-builtin-modff64 -CFLAGS-s_modff-sse4_1.c = -msse4.1 -fno-builtin-modff32 +CFLAGS-s_modf-sse4_1.c = -msse4.1 -fno-builtin-modff32x \ + -fno-builtin-modff64 -fno-trapping-math +CFLAGS-s_modff-sse4_1.c = -msse4.1 -fno-builtin-modff32 \ + -fno-trapping-math -CFLAGS-s_modf-avx.c = -mavx -fno-builtin-modff32x -fno-builtin-modff64 -CFLAGS-s_modff-avx.c = -mavx -fno-builtin-modff32 +CFLAGS-s_modf-avx.c = -mavx -fno-builtin-modff32x -fno-builtin-modff64 \ + -fno-trapping-math +CFLAGS-s_modff-avx.c = -mavx -fno-builtin-modff32 -fno-trapping-math endif ifeq ($(subdir),mathvec) --