Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAH9TF6Mtk=3Pw2fHXXBxNMUkBOKsB1orF8b0k7dqkRuON29dYQ@mail.gmail.com>
Date: Fri, 6 Dec 2024 01:54:45 +0100
From: Alex Rønne Petersen <alex@...xrp.com>
To: musl@...ts.openwall.com
Subject: Re: [PATCH] configure: prevent compilers from turning a * b + c into
 fma(a, b, c)

On Wed, Aug 28, 2024 at 5:28 PM Alex Rønne Petersen <alex@...xrp.com> wrote:
>
> I've seen Clang do this for expressions in the fma() implementation itself,
> which of course led to infinite recursion. This happened when targeting
> arm-linux-musleabi with full soft float mode and -march=armv8-a. I imagine
> it's possible for GCC to do similar silliness.
>
> Work around this by passing -ffp-contract=off for Clang and -mno-fused-madd
> for GCC. This matches what glibc's configure.ac does, FWIW.
> ---
>  configure | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/configure b/configure
> index bc9fbe48..7028793f 100755
> --- a/configure
> +++ b/configure
> @@ -355,6 +355,15 @@ tryflag CFLAGS_C99FSE -fexcess-precision=standard \
>  || { test "$ARCH" = i386 && tryflag CFLAGS_C99FSE -ffloat-store ; }
>  tryflag CFLAGS_C99FSE -frounding-math
>
> +#
> +# Prevent the compiler from turning a * b + c into an fma() call.
> +# Clang at least has been known to do this in the implementation of
> +# fma() itself when targeting arm-linux-musleabi and armv8-a, causing
> +# infinite recursion.
> +#
> +tryflag CFLAGS_C99FSE -mno-fused-madd
> +tryflag CFLAGS_C99FSE -ffp-contract=off
> +
>  #
>  # Semantically we want to insist that our sources follow the
>  # C rules for type-based aliasing, but most if not all real-world
> --
> 2.40.1
>

Ping. Is the patch acceptable without -mno-fused-madd (for ancient
GCCs)? If so, should I re-send without that line?

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.