https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111814
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Something like: ``` diff --git a/gcc/config/sh/sh.cc b/gcc/config/sh/sh.cc index 294faf7c0c3..18fa2129388 100644 --- a/gcc/config/sh/sh.cc +++ b/gcc/config/sh/sh.cc @@ -980,6 +980,10 @@ sh_option_override (void) if (! OPTION_SET_P (TARGET_IEEE)) TARGET_IEEE = ! flag_finite_math_only; + REAL_MODE_FORMAT (SFmode) = &mips_single_format; + REAL_MODE_FORMAT (DFmode) = &mips_double_format; + + if (sh_fixed_range_str) sh_fix_range (sh_fixed_range_str); ``` The mips (real) format here is the basically swapped meaning of the signalling bit.