https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78804
--- Comment #4 from Oleg Endo <olegendo at gcc dot gnu.org> --- (In reply to Nick Clifton from comment #2) > > So what I suspect is that something is missing from the rx libgcc > configuration files (libgcc/config/rx/t-rx and/or libgcc/config/rx/rx-lib.h) > which means that float_to_si() is being mis-compiled, for the 64-bit-doubles > multilib, with the size of a double set to 32-bits. I did a bit of digging ... When the 64-bit-double/libgcc multilib is built, the correct -m64bit-doubles arg is passed to the compiler. In libgcc/config/rx/t-rx there is: FPBIT = true ifeq ($(double_type_size),64) DPBIT = true endif and double_type_size is set to 64: config.log:double_type_size='64' config.log:long_double_type_size='64' config.status:S["long_double_type_size"]="64" config.status:S["double_type_size"]="64" Makefile:double_type_size = 64 Makefile:long_double_type_size = 64 Taking out FPBIT, DPBIT from libgcc/config/rx/t-rx or setting both to true doesn't make a difference. The __RX_64BIT_DOUBLES__ check in libgcc/config/rx/rx-lib.h seems to be OK when building 64-bit-double/libgcc, so FLOAT_ONLY is not defined and DF is not redefined to SF. libgcc/fp-bit.c is also compiled with things defined such as L_addsub_df. When 64-bit-double/libgcc is built, FLOAT_ONLY is not defined in libgcc/fp-bit.h ... Any other ideas where or what to check?