big slowdown in egcs-1.1.2->gcc-2.95 on alpha
Brad Lucier
lucier@math.purdue.edu
Thu Nov 4 13:49:00 GMT 1999
> 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
More information about the Gcc-bugs
mailing list