From gcc Mon Feb 22 12:50:23 2016 From: Michael Matz Date: Mon, 22 Feb 2016 12:50:23 +0000 To: gcc Subject: Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct Message-Id: X-MARC-Message: https://marc.info/?l=gcc&m=145614543228404 Hi, On Sat, 20 Feb 2016, Richard Smith wrote: > > An empty type is a type where it and all of its subobjects > > (recursively) are of class, structure, union, or array type. > > > > doesn't cover "trivially-copyable". > > That's correct. Whether a type is trivially copyable is unrelated to > whether it is empty. I would still feel more comfortable to include the restriction to trivially copyable types, not in the part of definition of empty type, of course, but as part of the restrictions of when a type can be passed in no registers. Basically to clarify the intent in the psABI if there's any doubt. I.e. like so: --- An empty type is a type where it and all of its subobjects (recursively) are of class, structure, union, or array type. No memory slot nor register should be used to pass or return an object of empty type that's trivially copyable. --- (With possibly a self-sufficient definition of trivially copyable, that's language agnostic) Ciao, Michael.