https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83487
--- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> --- My understanding is that GCC and G++ now handle those the same. But for the > 16 byte aggregates the psABI would need some rule, like say: If in C++ the object has a non-POD structure or union type, or contains unaligned fields, it has class MEMORY. Otherwise, if the aggregate (recursively) contains no fields with the above basic types, it is not passed at all. Otherwise, if the size of an object is larger than two eightbytes, it is passed in MEMORY. or so (talking about NO_CLASS for > 16 bytes aggregates would be weird, because it has more than two words).