-finline-functions does not affect libstdc++?

Richard Guenther rguenth@tat.physik.uni-tuebingen.de
Mon Oct 27 20:59:00 GMT 2003


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.





More information about the Gcc mailing list