This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


On Mon, Dec 14, 2015 at 2:08 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Mon, Dec 14, 2015 at 12:43 PM, Jason Merrill <jason@redhat.com> wrote:
>> On 12/14/2015 03:39 PM, H.J. Lu wrote:
>>>
>>> On Mon, Dec 14, 2015 at 12:16 PM, Jason Merrill <jason@redhat.com> wrote:
>>>>
>>>> On 12/12/2015 01:42 PM, Marc Glisse wrote:
>>>>>
>>>>>
>>>>> On Sat, 12 Dec 2015, Jakub Jelinek wrote:
>>>>>
>>>>>> On Sat, Dec 12, 2015 at 09:51:23AM -0500, Jason Merrill wrote:
>>>>>>>
>>>>>>>
>>>>>>> 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.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> About this patch, aren't we supposed to enable new C++ ABIs with
>>>>> -fabi-version=42 (or whatever the next number is)?
>>>>
>>>>
>>>>
>>>> Yes, the patch should definitely make this conditional on
>>>> abi_version_at_least.
>>>>
>>>>>>>>>> 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.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Well, the argument in that thread is weird, because C and C++ empty
>>>>>> structs
>>>>>> are different, so it isn't surprising they are passed differently.
>>>>>> C++ makes those sizeof == 1, while C has them sizeof == 0.
>>>>>
>>>>>
>>>>>
>>>>> Maybe it isn't surprising, but it isn't particularly helpful either. It
>>>>> increases the number of places where the 2 are incompatible.
>>>>> (I personally don't care about empty C structs)
>>>>
>>>>
>>>>
>>>> Yep.  The C standard doesn't have empty structs; it's a GNU extension.
>>>> But
>>>> in any case argument passing can be compatible between C and C++, so it
>>>> really should be.
>>>>
>>>>
>>>
>>> Before I make any changes, I'd like to ask if we should make
>>> argument passing can be compatible between C and C++ for
>>> all targets GCC support or just x86.
>>
>>
>> All.
>
> Here is the patch to guard this ABI change with the ABI level 10,
> which is updated in GCC 6.  OK for master if there is no regression
> on x86?
>
> The patch for non-x86 targets is at
>
> https://gcc.gnu.org/ml/gcc-patches/2015-12/msg01063.html
>

PING:

https://gcc.gnu.org/ml/gcc-patches/2015-12/msg01444.html

-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]