Revert __use_cache relocation

Jerry Quinn jlquinn@optonline.net
Tue Jul 1 13:02:00 GMT 2003


Carlo Wood writes:
 > On Tue, Jul 01, 2003 at 11:51:47AM +0200, Carlo Wood wrote:
 > > On Tue, Jul 01, 2003 at 01:38:53AM -0400, Jerry Quinn wrote:
 > > > This patch http://gcc.gnu.org/ml/libstdc++/2003-06/msg00368.html is
 > > > causing the instantiation problems I'm getting in
 > > > http://gcc.gnu.org/ml/libstdc++/2003-07/msg00003.html
 > > > 
 > > > Reverting this patch until we can figure out how to solve this.
 > > > 
 > > > Index: include/bits/locale_facets.tcc
 > > > +    const __numpunct_cache<char>&
 > > > +    __use_cache(const locale& __loc);
 > > 
 > > If you put this in locale_facets.tcc and #include
 > > it in a compilation unit, then it will instantiate
 > > std::numpunct<char>::id  no?
 > > 
 > > So, if you include it in two different compilation
 > > units (two different *.cc file #include it), then
 > > you get a redefinition.

The library files get built with -fno-implicit-instantiation.  The one
exception is concept-inst.cc.  That's so that it can instantiate a
whole raft of stuff to perform concept checks (and beyond that, I
don't know what's going on in there).

The funny thing is, moving the code into the header file worked fine a
couple of days ago.  That was before the recent flurry of qualifying
everything.  I guess I'll have to do a search to find which patch
changes things.  Alternatively, concept-inst.cc could be forced to
explicitly instantiate anything that's missing.

Hey, wait... isn't the linker supposed to clean multiple instantiation
symbols up?

 > Atually, I didn't even know if they was a normal
 > patch or a reversed patch - so I don't know that
 > code is added or removed :).

It was reversed, moving the code back into the .cc file :-)

Jerry Quinn



More information about the Gcc-patches mailing list