On Wed, 28 Aug 2024, Alex Rønne Petersen 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. musl passes -std=c99 to the compiler, and in all GCC releases so far* that disables FMA contraction (as opposed to -std=gnu99 or whichever -std=gnuXX is enabled by default, where unrestricted contraction is implicitly enabled, i.e. the non-standard and dangerous -ffp-contract=fast mode). Clang respects #pragma STDC FP_CONTRACT OFF, so that is available as a smaller hammer than disabling fma across the board. Breaking up contractable expression in fma*.c will work too. [*] maybe modulo bugs in old releases where the backend doesn't respect -ffp-contract=off and which Glibc worked around with -mno-fused-madd. Alexander