This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Removing space waste for g++ static inlined objects
- To: "Ronald F. Guilmette" <rfg at monkeys dot com>
- Subject: Re: Removing space waste for g++ static inlined objects
- From: Jason Merrill <jason at redhat dot com>
- Date: 24 Feb 2001 00:08:28 +0000
- Cc: David Korn <dkorn at pixelpower dot com>, "'gcc-patches at gcc dot gnu dot org'" <gcc-patches at gcc dot gnu dot org>
- References: <6193.982954556@monkeys.com>
>>>>> "Ronald" == Ronald F Guilmette <rfg@monkeys.com> writes:
> Included below is a revised and simpler one that seems to work quite
> well. It still doesn't live up to all of my best hopes with regard
> to link-time ``global'' (inter-compilation-unit) name conflicts/pollution,
> but I'm not sure that all of the problems in this regard can be solved
> without totally reinventing what we know as ``linking'' anyway. In
> other words, it looks to me like the definition of the language (C++)
> causes some basically insoluable problems, and that we just have to
> muddle along as best as we can... at least until some brave soul steps
> forward who wants to totally re-implement the linker from scratch.
What problems are you referring to? As you suspected and I confirmed, the
ODR guarantees that a class always refers to the same class throughout the
program.
> Anyway, for now, this patch makes the wasted space for static-duration
> extern-inline-function-nested objects go away. It has been tested on
> a big application and seems to work.
Thanks, but it'll need some more work to go into CVS; first, of course,
you'll need to update it to the current source tree (which has no function
called build_static_name). Also, rather than just call comdat_linkage, it
should use the code currently wrapped in 'if (!flag_weak)', so that
primitive object formats work somewhat. Finally, we need to support
calculating the discriminator properly for non-types.
Jason