On Wed, 2020-04-22 at 16:42 +0200, Jakub Jelinek via Gcc-patches wrote: > Hi! > > The following patch provides some further math library fallbacks. > fmaf can be implemented using fma if available, fma and fmal can use > x * y + z as fallback, it is not perfect, but e.g. glibc on various arches > has been using that as fallback for many years, > and copysign/copysignl/fabs/fabsl can be implemented using corresponding > __builtin_* if we make sure that gcc expands it inline instead of using > a library call (these days it is expanded inline on most targets). > > Bootstrapped/regtested on x86_64-linux and i686-linux and Andrea Corallo > has tested it on aarch64-elf. Ok for trunk? > > Fritz has a further patch for the PR to deal with cases where some functions > aren't available and there is no easy fallback for them. > > 2020-04-22 Jakub Jelinek <ja...@redhat.com> > > PR libfortran/94694 > PR libfortran/94586 > * configure.ac: Add math func checks for fmaf, fma and fmal. Add > HAVE_INLINE_BUILTIN_COPYSIGN check. > * c99_protos.h (copysign, fmaf, fma, fmal): Provide fallback > prototypes. > (HAVE_COPYSIGN, HAVE_FMAF, HAVE_FMA, HAVE_FMAL): Define if not > defined and fallback version is provided. > * intrinsics/c99_functions.c (copysign, fmaf, fma, fmal): Provide > fallback implementations if possible > * configure: Regenerated. > * config.h.in: Regenerated. Normally I try to stay out of libgfortran. But I'll go ahead and ACK this.
The *-elf targets in my tester don't build fortran/libgfortran. But I'm open to possibly turning that on if they're stable enough. jeff >