PING. On Tue, Jan 5, 2016 at 8:07 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Mon, Dec 14, 2015 at 2:08 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >> On Mon, Dec 14, 2015 at 12:43 PM, Jason Merrill <ja...@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 <ja...@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.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. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> 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.
-- H.J.