https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96153

--- Comment #6 from Iain Buclaw <ibuclaw at gdcproject dot org> ---
The distinction between x86_64 passing and SPARC64 failing seems to be whether
the struct returns in memory, or via registers.  If via registers, alignment
holes that were filled are ignored by the caller (values are copied away from
the returned struct, so holes will not be carried over to the destination).

By that measure then, all initialization of any struct type that doesn't
satisfy identity_compare_p will require pre-filling with zeros.  There are
still some cases where this does not happen, such as in this testcase:
toHash(checked(12));

Reply via email to