RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
Michael Matz via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 22 04:50:23 PST 2016
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.
More information about the cfe-commits
mailing list