PING^1: [PATCH] Add TYPE_EMPTY_RECORD for C++ empty class

Jason Merrill jason@redhat.com
Sat Dec 12 14:51:00 GMT 2015


On 12/11/2015 06:52 PM, H.J. Lu wrote:
> On Thu, Dec 10, 2015 at 3:24 AM, Richard Biener
> <richard.guenther@gmail.com> wrote:
>> On Wed, Dec 9, 2015 at 10:31 PM, Markus Trippelsdorf
>> <markus@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



More information about the Gcc-patches mailing list