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: new benchmark times on alpha


> > > OK, I may take a look at that example.
> > > 
> > > Honza
> > > > 
> > > > The .i file for the most egregious compile-time problems is at
> > > > 
> > > > http://www.math.purdue.edu/~lucier/scheme.i.gz
> > > > 
> > > > Brad Lucier
> > 
> > It seems to be relatively easy to isolate the problem pass here ;-):
> > 
> > popov-15% /export/u10/gcc-3.1/lib/gcc-lib/alphaev6-unknown-linux-gnu/3.1/cc1 -I../../../lib -O2 -W -Wall -Wno-unused -Wdisabled-optimization -fno-math-errno -fno-strict-aliasing -mcpu=ev6 -fomit-frame-pointer scheme.i
> >  ___H__20_scheme {GC 22338k -> 5849k} {GC 44113k -> 5438k} {GC 8029k -> 5861k} {GC 8882k -> 6508k} {GC 10519k -> 5394k} {GC 7447k -> 5989k} {GC 12330k -> 6716k} ___init_proc ____20_scheme
> > Execution times (seconds)
> >  garbage collection    :   0.76 ( 1%) usr   0.02 ( 2%) sys   1.25 ( 1%) wall
> >  cfg construction      :   0.40 ( 0%) usr   0.00 ( 0%) sys   0.25 ( 0%) wall
> >  cfg cleanup           :  80.13 (76%) usr   0.00 ( 0%) sys  80.00 (75%) wall

OK, I've reproduced this on alpha cross.   The problem is that crossjumping finds about
3000 oppurtunities to optimize that is much more than the old corssjumper did.  I believe
this is positive fact.  The optimizer appears to behave sanely - needs about 5 iterations
to stabilize. 

The profile is:
 14.25     21.33    21.33 43511047     0.00     0.00  rtx_renumbered_equal_p
 11.20     38.10    16.77 43510736     0.00     0.00  flow_find_cross_jump
  7.79     49.76    11.66 87127135     0.00     0.00  onlyjump_p
  7.72     61.32    11.56    24390     0.47     3.96  try_crossjump_bb
  7.33     72.30    10.98 43554487     0.00     0.00  try_crossjump_to_edge
  6.81     82.49    10.19 111131042     0.00     0.00  find_reg_note
  4.86     89.77     7.28 87638989     0.00     0.00  side_effects_p
  3.14     94.47     4.70 87079198     0.00     0.00  find_reg_equal_equiv_note
  1.94     97.38     2.91   763788     0.00     0.00  print_rtx

The CFG consist of 2832 blocks, so giving about 8000000 checks to check crossjumping possibility
each block with each.  Since we do have 7 iterations with crossjumping overall, the
40 millions of crossjump checks appears to make sense.  I will take a look if I can cut the
number somehow, but I doubt, as I did quite a lot of tricks already.

Perhaps we can add switch to controll crossjumping.

Honza
if the code were checking each basic block with each,


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