This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: big slowdown in egcs-1.1.2->gcc-2.95 on alpha
- To: lucier at math dot purdue dot edu, amylaar at cygnus dot co dot uk
- Subject: Re: big slowdown in egcs-1.1.2->gcc-2.95 on alpha
- From: Brad Lucier <lucier at math dot purdue dot edu>
- Date: Thu, 4 Nov 1999 16:48:54 -0500 (EST)
- Cc: rth at cygnus dot com, gcc at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, staff at math dot purdue dot edu, hosking at cs dot purdue dot edu, wilker at math dot purdue dot edu, bernds at cygnus dot com, gcc-patches at gcc dot gnu dot org
> Could you benchmark this patch?
>
> Thu Nov 4 06:15:40 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
>
> * global.c (CONFLICTP, SET_CONFLICT): Avoid signed division.
> (mirror_conflicts): New function.
> (global_alloc): Call it.
> (expand_preferences): Remove redundant CONFLICTP test.
> (find_reg, dump_conflicts): Likewise.
> (prune_preferences): Process conflicts one word at a time.
>
I bootstrapped yesterday's mainline on alphaev6-unknown-linux-gnu,
and ran it on a similar test case. Without the patch, I get:
/export/u10/egcs-prof/lib/gcc-lib/alphaev6-unknown-linux-gnu/2.96/cc1 -mcpu=ev6 -fno-math-errno -mieee -fPIC -O1 _meroon.i
___H__20___meroon {GC 220613k -> 46104k in 1.295} {GC 79384k -> 50882k in 1.474} {GC 69598k -> 53435k in 1.583} ___init_proc {GC 93235k -> 3595k in 0.078} ____20___meroon
...
time in global-alloc: 1237.253728 (85%)
...
and the top functions by time were:
29.05 142.54 142.54 2 71267.58 71273.92 prune_preferences
13.86 210.53 68.00 1599926669 0.00 0.00 bitmap_bit_p
11.99 269.37 58.84 2789 21.10 21.10 find_reg
10.93 322.99 53.62 3 17873.05 40871.13 build_insn_chain
9.55 369.85 46.86 194464 0.24 0.24 record_one_conflict
2.21 380.71 10.85 26627 0.41 0.41 record_conflicts
2.02 390.61 9.91 30909 0.32 0.32 delete_from_jump_chain
With the patch, I got
/export/u10/egcs-prof2/lib/gcc-lib/alphaev6-unknown-linux-gnu/2.96/cc1 -mcpu=ev6 -fno-math-errno -mieee -fPIC -O1 _meroon.i
___H__20___meroon {GC 220613k -> 46104k in 1.303} {GC 79384k -> 50882k in 1.459} {GC 69598k -> 53435k in 1.566} ___init_proc {GC 93235k -> 3595k in 0.080} ____20___meroon
...
time in global-alloc: 574.101744 (72%)
...
and the top functions were
19.82 67.88 67.88 1599926669 0.00 0.00 bitmap_bit_p
15.83 122.07 54.19 3 18063.15 41030.16 build_insn_chain
14.52 171.77 49.71 2789 17.82 17.82 find_reg
13.64 218.49 46.72 194464 0.24 0.24 record_one_conflict
3.14 229.26 10.76 26627 0.40 0.40 record_conflicts
2.94 239.32 10.06 30909 0.33 0.33 delete_from_jump_chain
...
0.51 277.15 1.74 2 869.63 870.11 prune_preferences
So, even though global-alloc is still the biggest time sink, your patch
makes a *big* difference. (I don't believe the times reported in each
pass of the compiler are reliable when it is profiled with -pg.)
Brad