On Fri, Feb 19, 2016 at 5:35 AM, Michael Matz <m...@suse.de> wrote: > Hi, > > On Thu, 18 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. No >> >> memory slot nor register should be used to pass or return an object >> >> of empty type. >> > >> > The trivially copyable is gone again. Why is it not necessary? >> >> The C++ ABI doesn't defer to the C psABI for types that aren't >> trivially-copyable. See >> http://mentorembedded.github.io/cxx-abi/abi.html#normal-call > > Hmm, yes, but we don't want to define something for only C and C++, but > language independend (so far as possible). And given only the above > language I think this type: > > struct S { > S() {something();} > }; > > would be an empty type, and that's not what we want.
Yes it is. Did you mean to give S a copy constructor, copy assignment operator, or destructor instead? > "Trivially copyable" > is a reasonably common abstraction (if in doubt we could even define it in > the ABI), and captures the idea that we need well (namely that a bit-copy > is enough). > > > Ciao, > Michael. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits