[PATCH] C++ space optimization: de-cloning con/de/structors, take IV

Daniel Jacobowitz drow@false.org
Wed May 12 21:30:00 GMT 2004


On Wed, May 12, 2004 at 01:56:25PM -0700, Matt Austern wrote:
> On May 12, 2004, at 1:29 PM, Jason Merrill wrote:
> 
> >On Wed, 12 May 2004 13:00:06 -0700, Stuart Hastings <stuart@apple.com> 
> >wrote:
> >
> >>>In my response to your third revision of the patch, I asked about 
> >>>making
> >>>the symbols both private and coalesced; obviously if we can't 
> >>>eliminate
> >>>duplicates that interferes with the space optimization.  What's the
> >>>situation with the symbol names in the current Apple compiler?  I 
> >>>thought
> >>>that the direction discussed at
> >>>
> >>>  http://gcc.gnu.org/ml/gcc-patches/2002-08/msg00629.html
> >>>
> >>>seemed reasonable.
> >>
> >>I inquired with Matt Austern (in the adjacent office :-), and was 
> >>told that
> >>nothing had been proposed to the ABI committee.
> >
> >No, not yet.  What does the current Apple compiler do?
> 
> A variant of the ABI's scheme for distinguishing between the
> various kinds of constructors and destructors.  We use [CD]1
> for in-charge and [CD]2 for not-in-charge as the ABI says,
> and then we use [CD]4 for unified.
> 
> It seemed like the obvious extension.  Mark is right, though,
> that gcc shouldn't do something like this without getting
> blessing from the ABI committee.

When I adapted an older version of this patch to 3.3, in addition to
fixing some interactions with dwarf2, I hacked together code to ensure
that the unified *structor was emitted in any translation unit that
might reference it via inlining of the wrappers.  I can dig that code
out if anyone wants it (but I don't recommend looking at it :P)

It worked well enough for my purposes, although the constructors tended
to show up twice in a row in GDB backtraces, and various hacks to GDB
were needed to step through the wrapper automatically.

-- 
Daniel Jacobowitz



More information about the Gcc-patches mailing list