On Fri, Feb 12, 2016 at 11:39 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Fri, Feb 12, 2016 at 6:58 AM, Matthijs van Duin > <matthijsvand...@gmail.com> wrote: >> On 11 February 2016 at 16:31, H.J. Lu <hjl.to...@gmail.com> wrote: >>> struct A { >>> static void foo (void) (); >>> static int xxx; >>> }; >> >> What about it? It's an empty struct. (And it declares a function and >> a variable in the namespace of A, which however do not have any >> relevant impact here.) >> > > Thanks for all the feedbacks. Here is the new proposal: > > 1. "empty type". An empty type is a trivially-copyable aggregate > occupying zero bytes (excluding any padding). > 2. No memory slot nor register should be used to pass or return an object > of empty type. > > Footnote: Array of empty type can only passed by reference in C/C++. >
I updated intel386, x86-64 and IA MCU psABIs: https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI to specify: Empty type is defined as a trivially-copyable aggregate occupying zero bytes (excluding any padding). No memory slot nor register should be used to pass or return an object object of empty type. with footnote: Array of empty type can only passed by reference in C and C++. Any comments? Thanks. -- H.J. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits