This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Getting 3.3 out the door
> On Thu, 2003-04-10 at 15:41, Joe Buck wrote:
> > On Thu, Apr 10, 2003 at 03:33:03PM -0700, Mark Mitchell wrote:
> > > These functions get external linkage because the C++ standard says they
> > > do. On the other hand, I've never been able to figure out whether a
> > > conforming program could actually *tell*. Adding "export" into the mix
> > > makes it more complicated; now an export template defined in that file
> > > but instantiated somewhere else can see the members of the anonymous
> > > namespace.
> >
> > Exactly! In the majority of cases there is no conforming program that
> > can tell the difference between file-static and anonymous namespace.
> > It appears that exported templates can tell, and there may be a couple
> > of other similar cases.
> >
> > My suggestion is to avoid emitting globals for anonymous namespace members
> > until the end of the unit, at which point any that must be generated are
> > generated. Names are flagged as "must be generated" when a situation
> > like a use in an exported template occurs. There may be others, but
> > I expect them to be rare.
>
> This is all a good idea, and I agree, but I don't think it's appropriate
> for 3.3. It's not a trivial change, and the C++ front end is fragile
> with respect to emission order, due to the interplay between the varasm
> routines and the front end. You can also mess up things like
> initialized constants and template instantiation if you're not careful.
>
> Jan's worked on this for 3.4, and doing what you suggest there would
> likely make sense.
What do you mean? The unit-at-a-time bits?
I pushed these that I can get across majority of C++ testsuite, however
still some constructors and such appears to be missed in the resulting
binaries. I will try to look into this over weekend and send a
questions if I fail to track this down.
Honza
>
> --
> Mark Mitchell
> CodeSourcery, LLC
> mark at codesourcery dot com
>