This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: gcc 3.0.1 & C++ ABI issues
- To: Nathan Sidwell <nathan at codesourcery dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Subject: Re: gcc 3.0.1 & C++ ABI issues
- From: Mark Mitchell <mark at codesourcery dot com>
- Date: Mon, 06 Aug 2001 07:49:24 -0700
- cc: "jason at redhat dot com" <jason at redhat dot com>, Stefan Westerfeld <stefan at space dot twc dot de>, "simong at oz dot agile dot tv" <simong at oz dot agile dot tv>
--On Sunday, August 05, 2001 08:26:28 PM +0100 Nathan Sidwell
<nathan@codesourcery.com> wrote:
> Guys,
> Stefan has emailed me, regarding the state of 3.0.1 wrt KDE. Here's my
> summary
Thank you for putting this together.
> As it's now the 5th August, I do not think we will have a KDEable compiler
> with 3.0.1. The patch set from which I extracted 3909's fix is still
> incomplete and I am unlikely to have time to work on it until late August.
> Once I'm happy with that patch set, I'll see if KDE starts working with
> it.
That sounds like the right plan to me. I'm sure that 3.0.1 is better than
3.0, C++-wise, and that is good.
> There are some outstanding empty class issues. Jason had some queries with
> the patch I posted
> (http://gcc.gnu.org/ml/gcc-patches/2001-08/msg00002.html) concerning
> copying empty classes. Have you had time to consider my response?
I think the patch is OK, with the better comment that evolved out of the
discussion. If the standard doesn't mandate that the ctor/dtor
pairing happen the way the testcase wants it to, I think it's OK that
you change it -- but in such a way that, as you say, you count the
ctors/dtors to make sure the RVO is still happenning. So, this patch
is approved.
> There appears to be something strange with passing empty classes by value
> (http://gcc.gnu.org/ml/gcc-bugs/2001-08/msg00136.html). In spite of
> the subject, this is nothing to do with multiple inheritance. The ABI doc
> specifies (3.1.1), that value parameters need to be passed by reference
> if they have a non-trivial copy ctor or dtor. At first glance we appear
> to only check the former. So, although we're consistent, we're at variance
> from the spec.
I think we should fix this on the mainline, but not on the branch. Our
current working assumption is that the ABI for the library is going
to change wildly on the mainline, forcing recompilation for most
people in 3.1 anyhow, and so we can hide minor core ABI changes beneath
that cover. This case seems precisely analagous to the overloaded
operator delete stuff that I found.
> There appears to be a problem with thunks and sj-lj exception handling,
> which is reported in http://gcc.gnu.org/ml/gcc-bugs/2001-08/msg00061.html.
> Our long term goal is to eliminate sj-lj exceptions (right?), but that
> doesn't help for now. (I don't know if this is a 2.95 regression)
I don't know either.
Thanks,
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com