This is the mail archive of the gcc@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] |
Matt Austern <austern@apple.com> writes:
...I don't yet have a patch for this change; I'm sending out a message because I'd like very much to get it into 3.4, and I'll have to bend the deadline slightly to do it. I wanted to see if people thought that was OK before doing much more of the work.
There's no good reason for coalescing to be implemented as a bunch of local Apple patches. It should all be in the Darwin back end, and all the compiler should care about (for the most part) is that Darwin has a way of making symbols one-only. I'd like to fix Darwin's C++ implementation by teaching the Darwin back end how to do coalescing properly.
This will require a tiny bit of work in the generic front end. By default, Apple doesn't export coalesced symbols from dynamic libraries: the combination of coalescing, dynamic linking, and various esoteric linker features, is intricate enough that we don't think it's appropriate for most users. This means we have to be slightly careful about marking a symbol coalesced. In particular we have to be careful with vtables: we can't mark all vtables coalesced, only the ones that really will be emitted in multiple translation units.
I am not sure what this entails, and it's not clear to me whether the compiler can tell when a vtable is going to be emitted in multiple translation units. This sounds like the most problematic part of your proposal.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |