https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64779
--- Comment #10 from Richard Henderson <rth at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #6)
That will probably break small structure return.
See
case FFI_TYPE_STRUCT:
#ifndef X86
/* ??? This should be a different ABI rather than an ifdef. */
if (cif->rtype->size == 1)
flags = X86_RET_STRUCT_1B;
else if (cif->rtype->size == 2)
flags = X86_RET_STRUCT_2B;
else if (cif->rtype->size == 4)
flags = X86_RET_INT32;
else if (cif->rtype->size == 8)
flags = X86_RET_INT64;
else
#endif