This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
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%
---------------------------------------------------------------------------