[cxx-abi-dev] Passing an empty class by value

John McCall rjmccall at apple.com
Fri Dec 11 00:15:30 UTC 2015


> On Dec 10, 2015, at 4:11 PM, Nelson, Clark <clark.nelson at intel.com> wrote:
> 
> It has come to my attention that GCC and clang generate incompatible code
> for passing an argument of an empty class type.
> 
> clang seems to completely ignore arguments and parameters of empty class
> type -- which seems to make a certain amount of sense.
> 
> OTOH, as far as I understand it, GCC effectively treats an empty class
> equivalently to a class containing a single member with some character
> type -- which also seems pretty reasonable.
> 
> Should the C++ ABI come down on one side or the other of this question?
> 
> This is really the sort of question a psABI should settle. But of course
> the C language doesn't actually support a structure with no members, so
> it's not too surprising if a psABI doesn't nail down what should happen
> for this.

It’s valid as a C extension in GCC.  If there are platforms where we use a
different rule from GCC, we should come to some understanding with them.

Because of the GCC extension, C++ can’t really use different rules from C.

John.

> 
> --
> Clark Nelson            Chair, PL22.16 (ANSI C++ standard committee)
> Intel Corporation       Chair, SG10 (C++ SG for feature-testing)
> clark.nelson at intel.com  Chair, CPLEX (C SG for parallel language extensions)
> _______________________________________________
> cxx-abi-dev mailing list
> cxx-abi-dev at codesourcery.com
> http://sourcerytools.com/cgi-bin/mailman/listinfo/cxx-abi-dev



More information about the cxx-abi-dev mailing list