This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
RE: -finline-functions does not affect libstdc++?
- From: Richard Guenther <rguenth at tat dot physik dot uni-tuebingen dot de>
- To: Chris Lattner <sabre at nondot dot org>
- Cc: gcc at gcc dot gnu dot org
- Date: Mon, 27 Oct 2003 19:39:33 +0100 (CET)
- Subject: RE: -finline-functions does not affect libstdc++?
- References: <Pine.LNX.4.44.0310271235040.6788-100000@nondot.org>
On Mon, 27 Oct 2003, Chris Lattner wrote:
>
> Richard Guenther wrote:
> > It seems specifying -finline-functions with gcc3.4 does not affect
> > libstdc++ declarations!? I figured this out while doing work on
> > attribute((leafify)). Is this intentional? At least it hurts performance
> > quite a bit!
>
> This is because almost all of libstdc++ is specified in terms of
> "external" templates. For example, ostream and istream all use external
> templates, so the compiler does not instantiate them except when building
> libstdc++. Presumably this is a performance optimization of the compiler
> itself, rather than of the code.
Hm, the failed to inline functions are actually in the headers, but not
marked inline. So I still think -finline-functions does not affect
libstdc++ declarations.
But, I doubt so much changed between 3.3 and 3.4 in this area. So there
must be something seriously wrong with 3.4s loop/gcse/cse passes that they
leave all this crap in, compared to 3.3. Ugh. I'll try to dig into it -
but 223 lines assembly for 3.3 compared to 531 for 3.4 is just bad.
Any hints? Anybody wants another (huge) POOMA testcase? ;)
Richard.