]> git.ipfire.org Git - thirdparty/glibc.git/commit
math: x86 floor traps when FE_INEXACT is enabled (BZ 31601)
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 3 Apr 2024 19:39:18 +0000 (16:39 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 4 Apr 2024 17:29:28 +0000 (14:29 -0300)
commit932544efa469568525455bcb53d4eabeba0eb295
treeb3e510754dcce550451bc5dac1fec6c5a55a4958
parent637bfc392f406c6c77f59494ed34949a6161bceb
math: x86 floor traps when FE_INEXACT is enabled (BZ 31601)

The implementations of floor functions using x87 floating point (i386 and
86_64 long double only) traps when FE_INEXACT is enabled.  Although
this is a GNU extension outside the scope of the C standard, other
architectures that also support traps do not show this behavior.

The fix moves the implementation to a common one that holds any
exceptions with a 'fnclex' (libc_feholdexcept_setround_387).

Checked on x86_64-linux-gnu and i686-linux-gnu.
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
math/Makefile
math/test-floor-except-2.c [new file with mode: 0644]
sysdeps/i386/fpu/s_floor.S [deleted file]
sysdeps/i386/fpu/s_floor.c [new file with mode: 0644]
sysdeps/i386/fpu/s_floorf.S [deleted file]
sysdeps/i386/fpu/s_floorf.c [new file with mode: 0644]
sysdeps/i386/fpu/s_floorl.S [deleted file]
sysdeps/x86/fpu/s_floorl.c [new file with mode: 0644]
sysdeps/x86_64/fpu/s_floorl.S [deleted file]