https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102024
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot gnu.org --- Comment #18 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > TYPE_MODE should be ok too, it is just passing of arguments by value and > returning by value that could be problematic on > aarch64, arm, i386, ia64, iq2000, mips, riscv, rs6000, s390, sh and sparc > I think sh is ok, it ignores integer_zerop (DECL_SIZE (field)). On SPARC, the 32-bit ABI passes structures by reference so is not concerned while the 64-bit ABI does the same as SH: /* Walk the real fields, but skip those with no size or a zero size. ??? Fields with variable offset are handled as having zero offset. */ for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field)) if (TREE_CODE (field) == FIELD_DECL) { if (!DECL_SIZE (field) || integer_zerop (DECL_SIZE (field))) continue; so is not affected either.