This is the mail archive of the gcc-patches@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]

Re: big slowdown in egcs-1.1.2->gcc-2.95 on alpha


> 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


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