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

The implementations of ceil functions using x87 floating point (i386 and
x86_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-ceil-except-2.c [new file with mode: 0644]
sysdeps/i386/fpu/s_ceil.S [deleted file]
sysdeps/i386/fpu/s_ceil.c [new file with mode: 0644]
sysdeps/i386/fpu/s_ceilf.S [deleted file]
sysdeps/i386/fpu/s_ceilf.c [new file with mode: 0644]
sysdeps/i386/fpu/s_ceill.S [deleted file]
sysdeps/x86/fpu/s_ceill.c [new file with mode: 0644]
sysdeps/x86/fpu/s_nearestint_387_template.c [new file with mode: 0644]
sysdeps/x86_64/fpu/s_ceill.S [deleted file]