[PATCH] i386: Fix fmod/fmof/remainder/remainderf for gcc-12
Adhemerval Zanella Netto
adhemerval.zanella@linaro.org
Mon Dec 1 19:18:46 GMT 2025
On 24/11/25 11:31, Adhemerval Zanella Netto wrote:
>
>
> On 20/11/25 21:01, H.J. Lu wrote:
>> On Fri, Nov 21, 2025 at 7:23 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>>>
>>> On Thu, Nov 20, 2025 at 8:21 PM Adhemerval Zanella
>>> <adhemerval.zanella@linaro.org> wrote:
>>>>
>>>> The __builtin_fmod{f} and __builtin_remainder{f} were added on gcc 13,
>>>> and the minimum supported gcc is 12. This patch adds a configure test
>>>> to check whether the compiler enables inlining for fmod/remainder, and
>>>> uses inline assembly if not.
>>>>
>>>> Checked on i686-linux-gnu wih gcc-12.
>>>> ---
>>>> config.h.in | 3 +++
>>>> sysdeps/i386/fpu/e_fmod.c | 14 ++++++++++
>>>> sysdeps/i386/fpu/e_fmodf.c | 14 ++++++++++
>>>> sysdeps/i386/fpu/e_remainder.c | 14 ++++++++++
>>>> sysdeps/i386/fpu/e_remainderf.c | 14 ++++++++++
>>>> sysdeps/x86/configure | 48 +++++++++++++++++++++++++++++++++
>>>> sysdeps/x86/configure.ac | 27 +++++++++++++++++++
>>>> 7 files changed, 134 insertions(+)
>>>>
>>>> diff --git a/config.h.in b/config.h.in
>>>> index a7cc17df8e..bfcd29bcdf 100644
>>>> --- a/config.h.in
>>>> +++ b/config.h.in
>>>> @@ -317,6 +317,9 @@
>>>> /* Define if trunc is inlined on x86. */
>>>> #undef HAVE_X86_INLINE_TRUNC
>>>>
>>>> +/* Define if __builtin_fmod/__builtin_remainder is inlined on x86. */
>>>> +#undef HAVE_X86_INLINE_FMOD
>>>> +
>>>> /* Define if compiler allows add attribute after function declaration. */
>>>> #undef ATTR_AFTER_FUNC_DECL
>>>>
>>>> diff --git a/sysdeps/i386/fpu/e_fmod.c b/sysdeps/i386/fpu/e_fmod.c
>>>> index 281b23dffc..93b6f9d698 100644
>>>> --- a/sysdeps/i386/fpu/e_fmod.c
>>>> +++ b/sysdeps/i386/fpu/e_fmod.c
>>>> @@ -33,7 +33,21 @@ __fmod (double x, double y)
>>>> && !is_nan (hx)))
>>>> return __math_invalid (x);
>>>>
>>>> +#if HAVE_X86_INLINE_FMOD
>>>
>>> Does __has_builtin (__builtin_fmod) work? Can you define
>>> __builtin_fmod in x86/fpu/math-inline-asm.h
>>
>> __has_builtin (__builtin_fmod) doesn't work since GCC 12 just
>> calls the C function. But it is still a good idea to put them in
>> x86/fpu/math-inline-asm.h.
> What do we gain by using __has_builtin here? I coded in the manner that
> if/when we raise the minimum required gcc to 13 we can just remove this
> support.
Ping.
More information about the Libc-alpha
mailing list