https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127378
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The bitint-28.c FAIL is on
201 check_invalid (testflt_135 (__builtin_inff ()) ==
21778071482940061661655974875633165533183wb, 1);
because __fixsfbitint doesn't raise FE_INVALID exception.
The problem is that libgcc/config/rs6000/sfp-machine.h guards the exception
stuff in there with
/* Only provide exception support if we have hardware floating point using
floating point registers and we can execute the mtfsf instruction. This
would only be true if we are using the emulation routines for IEEE 128-bit
floating point on pre-ISA 3.0 machines without the IEEE 128-bit floating
point support. */
#ifdef __FLOAT128__
For proper float/double/__ibm128 <-> _BitInt support we need exception support
even without that.
sfp-exceptions.c is guarded on
#ifndef __NO_FPRS__
instead (but is compiled with -mvsx -mfloat128 -mno-float128-hardware which I
think rules out really old powerpc{,64}.