https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69706
--- Comment #5 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- It's a bug in the original implementation of the SPARC 64-bit calling conventions dating back to 1998: /* There's no need to check this_slotno < SPARC_FP_ARG_MAX. If it wasn't true we wouldn't be here. */ That's wrong for a 12- or 16-byte FP structure passed in slot #15, which must be passed half in %d30 and half on the stack according to SCD 2.4.1. What's annoying is that, while for a 12-byte structure this results in an ICE as in the case at hand, for a 16-byte structure containing doubles this results in wrong code, in the form of a violation of the SPARC 64-bit calling conventions (the second half of the structure is passed in %d32 instead of on the stack). So we are faced with the following alternative: 1. Fix only the ICE and don't change GCC's ABI, IOW keep the ABI bug, 2. Fix the ICE and the ABI bug, IOW change GCC's ABI.