------- Additional Comments From rguenth at tat dot physik dot uni-tuebingen 
dot de  2004-12-06 13:18 -------
Subject: Re:  [4.0 Regression] Inlining limits
 cause 340% performance regression

On 6 Dec 2004, hubicka at ucw dot cz wrote:

> The cfg inliner per se is not too interesting.  What matters here is the
> code size esitmation and profitability estimation.  I am playing with
> this now and trying to get profile based inlining working.

Yes, I guess the cfg inliner and some early dead code removal passes
should improve code size metrics for stuff like

template <class X>
struct Foo
{
  enum { val = X::val };
  void foo()
  {
    if (val)
      ...
    else
      ...
  }
};

with val being const.

> For -n10 and tramp3d.cc I need 2m14s on mainline, 1m31s on the current
> tree-profiling.  With my new implementation I need 0m27s with profile
> feedback and 2m53s without.  I wonder what makes the new heuristics work
> worse without profiling, but just increasing the inline-unit-growth very
> slightly (to 155) I get 0m42s.  This might be just little unstability in

Note that inline-unit-growth is 50 by default, so 155 is not slightly
increased.

> the order of inlining decisions affecting this.  I would be curious how
> those results compare to leafify and whether the 0m27s is not caused by
> missoptimization.

You can check for misoptimization by looking at the final output.
I.e. the rh,vx,vy and vz sums should be nearly zero, the T sum
will increase with the number of iterations.

With mainline, -O2 -fpeel-loops -march=pentium4 -ffast-math
-D__NO_MATH_INLINES (we still need explicit -fpeel-loops for
unrolling for (i=0;i<3;++i) a[i]=0;), I need 0m17s for -n 10 with
leafification turned on, with it turned off, runtime increases
to 0m31s with --param inline-unit-growth=175.

> Unless I will observe it otherwise (on SPEC with intermodule), I will
> apply my current patch and try to improve the profitability analysis
> without profiling incrementally.  Ideally we ought to build estimated
> profile and use it, but that needs some work so for the moment I guess I
> will try to experiment with making loop depth available to the cgraph
> code.

Yes, loops could be "auto-leafified", but it will be difficult to
statically check if that is worthwhile.

Richard.

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18704

Reply via email to