This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: tree-ssa status (was: Re: Dropping of old loop optimizer)


On Thu, 27 Feb 2003, Steven Bosscher wrote:

> There is a difference between things that "work fine" and things that
> "are ready".
> 
Yup.

> What, for example, is the compile time performance on the branch?  SPEC
> results compared to mainline?  If I correctly interpret Diego's SPEC
> tester results, it does not quite look like it's there yet.
>
Yes, we are not quite there yet.

Since you brought it up, I got curious and gathered a few stats.
This is how the branch looks today in terms of compile time
compared with mainline:

- All times are in seconds.
- All the compilers are built with ENABLE_CHECKING.
- Bootstrap times are for all default languages (C, C++, Java,
  Fortran and ObjC).

------------------------------------------------------------------------
Build times	mainline	tree-ssa	Difference
------------------------------------------------------------------------
SPEC95		 375		 418		+11%	
SPEC2000	 517		 586		+13%
Bootstrap	3247		3588		+10%
------------------------------------------------------------------------

In terms of runtime performance, the branch is ~3% slower on
SPECint2000 and ~11% slower on SPECfp2000.  There's a couple of
individual tests where the branch is marginally faster than
mainline.  The branch also fails to compile vpr, eon and perlbmk.
So we need to look at those failures eventually.  Boring details
at the end of this message.

For SPEC95, the branch is about 7% slower than mainline on
SPECint95 (SPECfp95 is Fortran only, so the results are virtually
identical).  The branch fails to compile m88ksim and produces
better results for compress.


> Diego, you suggested last month that you would like to merge the branch
> in the near feature (on the gomp list IIRC).  What are the show stoppers
> you know about, other than that it will not be ready before stage1
> ends?  There branch has moved so fast over the last two months that a
>
My idea is to propose a merge only when we meet the following:

- Bootstrap times similar or better than mainline.
- Comparable SPEC95 and SPEC2000 results.
- Number of testsuite failures comparable with mainline.
- Tree optimizers enabled for C and C++.

The branch may have to comply with additional requirements from
the community.  That's just my own of criteria, I may have missed
something.  The usual battery of cross and native builds will
have to be done, as well.

In terms of things left to do.  The more important that come to
mind are:

- A real SSA->normal pass.  The current unSSA pass simply drops
  the SSA version numbers.  If two versions of the same variable
  have been moved crossing life boundaries, we silently generate
  wrong code.

- Support for try/catch in the flowgraph.  With the addition of
  C++, we now support try/catch in GIMPLE.  The flowgraph still
  doesn't know that.

- Investigate what can be modified/removed/simplified in the RTL
  backend due to the different "flavour" of RTL that the tree
  optimizers emit.  I suspect that we could get a big compile
  time boost if we could get rid of unnecessary work in the
  backend.  We could also find that we need some more additional
  passes at the tree level that we still haven't thought of.


So, it's a lot of work.  Will it be ready for 3.5's stage1?  I
don't know.  Particularly if the list of requirements grows
bigger.  The integration work will also be interesting.  I diff'd
mainline and the branch a few days ago:

 307 files changed, 80994 insertions(+), 4342 deletions(-)


> (I can send you a patch to update the web page iyl.  It still claims
> you're using FUD chains :-)
> 
Oops.  Patches appreciated!


Diego.


---------------------------------------------------------------------------
SPECint2000

    Benchmark	Mainline	tree-ssa	% diff
     164.gzip	669.33		646.19		-  3.46%
      175.vpr	430.87		  0.00		-100.00%
      176.gcc	678.95		649.51		-  4.34%
      181.mcf	418.57		425.79		+  1.73%
   186.crafty	689.60		647.80		-  6.06%
   197.parser	561.97		539.01		-  4.09%
      252.eon	583.56		  0.00		-100.00%
  253.perlbmk	868.12		  0.00		-100.00%
      254.gap	736.19		711.74		-  3.32%
   255.vortex	832.92		837.57		+  0.56%
    256.bzip2	545.44		513.55		-  5.85%
    300.twolf	538.90		520.49		-  3.42%
         mean	614.52		599.10		-  2.51%


SPECfp2000

    Benchmark	Before		 After		% diff
  168.wupwise	824.20		808.10		-  1.95%
     171.swim	506.86		502.08		-  0.94%
    172.mgrid	485.86		515.41		+  6.08%
    173.applu	555.19		536.63		-  3.34%
     177.mesa	731.30		678.08		-  7.28%
   178.galgel	  0.00		  0.00		INF
      179.art	373.37		191.51		- 48.71%
   183.equake	819.99		820.92		+  0.11%
  187.facerec	  0.00		  0.00		INF
     188.ammp	359.64		351.84		-  2.17%
    189.lucas	  0.00		  0.00		INF
    191.fma3d	  0.00		  0.00		INF
 200.sixtrack	314.80		304.86		-  3.16%
     301.apsi	  0.00		340.96		INF
         mean	521.57		461.42		- 11.53%
---------------------------------------------------------------------------


---------------------------------------------------------------------------
SPECint95

    Benchmark	Before		 After		% diff
       099.go	 43.11		 42.86		-  0.59%
  124.m88ksim	 30.64		  0.00		-100.00%
      126.gcc	 33.48		 31.72		-  5.26%
 129.compress	 22.39		 23.34		+  4.26%
       130.li	 32.30		 30.40		-  5.88%
    132.ijpeg	 34.91		 30.85		- 11.62%
     134.perl	 46.71		  0.00		-100.00%
   147.vortex	 32.95		 32.14		-  2.45%
         mean	 33.84		 31.39		-  7.23%
---------------------------------------------------------------------------


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]