On 12/11/2015 06:52 PM, H.J. Lu wrote:
On Thu, Dec 10, 2015 at 3:24 AM, Richard Biener
<richard.guent...@gmail.com> wrote:
On Wed, Dec 9, 2015 at 10:31 PM, Markus Trippelsdorf
<mar...@trippelsdorf.de> wrote:
On 2015.12.09 at 10:53 -0800, H.J. Lu wrote:

Empty C++ class is a corner case which isn't covered in psABI nor C++ ABI.
There is no mention of "empty record" in GCC documentation.  But there are
plenty of "empty class" in gcc/cp.  This change affects all targets.  C++ ABI
should specify how it should be passed.

There is a C++ ABI mailinglist, where you could discuss this issue:
http://sourcerytools.com/cgi-bin/mailman/listinfo/cxx-abi-dev

Yep.  As long as the ABI doesn't state how to pass those I'd rather _not_ change
GCCs way.

It is agreed that GCC is wrong on this:

http://sourcerytools.com/pipermail/cxx-abi-dev/2015-December/002876.html

Yes, I think this is just a (nasty) bug on some GCC targets.

Here is the updated patch.   I updated -WpsABI to warn empty
record which are passed in a variable argument list or aren't the last
arguments.   They are triggered in:

/export/build/gnu/gcc-x32/build-x86_64-linux/prev-x86_64-pc-linux-gnu/libstdc++-v3/include/bits/hashtable.h:1507:7:
note: the ABI of passing empty record has changed in GCC 6
>....

Oof. Well, at least it's all C++11 stuff, and GCC 5 still defaulted to C++98...

Jason

Reply via email to