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: law at cygnus dot com, 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: Tue, 9 Nov 1999 11:26:12 -0500 (EST)
- Cc: lucier at math dot purdue dot edu, 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
> > ~8% off my testcase.
>
> Do you have any profile data for that?
I have some data for compiling a large, integer, file with
-O2 -mcpu=ev6 -fno-math-errno -fPIC
on the alpha. However (1) I don't know how characteristic the program
is to others, and (2) I don't usually compile this file with -O2. So
if you find this data useful, great, otherwise, ignore it.
The times for each pass are:
popov-53% /export/u10/egcs-prof/lib/gcc-lib/alphaev6-unknown-linux-gnu/2.96/cc1 -mcpu=ev6 -fno-math-errno -mieee -fPIC -O2 _meroon.i
__copysignf copysignf __copysign copysign __fabsf fabsf __fabs fabs __floorf __floor floorf floor __fdimf fdimf __fdim fdim ___H__20___meroon {GC 160095k -> 33708k in 0.929} {GC 45097k -> 33687k in 0.940} {GC 47074k -> 37662k in 1.075} {GC 50287k -> 35884k in 1.022} {GC 54712k -> 40701k in 1.212} {GC 64544k -> 42767k in 1.267} ___init_proc {GC 86293k -> 3001k in 0.069} {GC 6054k -> 3060k in 0.145} ____20___meroon
time in parse: 21.162608 (-4%)
time in integration: 0.000000 (-0%)
time in jump: 516.838848 (-101%)
time in cse: 15.099696 (-3%)
time in gcse: -1645.-331280 (323%)
time in loop: 1.242448 (-0%)
time in cse2: 13.482464 (-3%)
time in branch-prob: 0.000000 (-0%)
time in flow: 8.959680 (-2%)
time in combine: 11.807648 (-2%)
time in regmove: 3.503840 (-1%)
time in sched: 356.688960 (-70%)
time in local-alloc: 5.562224 (-1%)
time in global-alloc: 34.060448 (-7%)
time in flow2: 8.440448 (-2%)
time in peephole2: 0.180560 (-0%)
time in sched2: 111.030736 (-22%)
time in shorten-branch: 0.581696 (-0%)
time in final: 3.423808 (-1%)
time in varconst: 0.001952 (-0%)
time in symout: 0.000000 (-0%)
time in dump: 0.000000 (-0%)
time in gc: 6.659248 (-1%)
So it seems that the int's used to contain the times in toplev.c don't
quite cut it here--change to unsigned longs (gains 1 bit on 32bit machines,
32 bits on the alpha) or doubles?
The top times in the profile file are:
Each sample counts as 0.000976562 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
24.79 435.90 435.90 205024 0.00 0.00 pre_expr_reaches_here_p_work
21.63 816.15 380.25 812491634 0.00 0.00 expr_killed_p
8.85 971.72 155.58 1 155.58 535.82 compute_ae_kill
7.68 1106.72 135.00 37475 0.00 0.00 compute_block_backward_dependences
6.31 1217.65 110.93 122524058 0.00 0.00 rtx_renumbered_equal_p
5.00 1305.47 87.82 97294 0.00 0.00 compute_transp
4.24 1380.02 74.54 67176104 0.00 0.00 find_cross_jump
3.67 1444.46 64.44 3 21.48 33.16 compute_hash_table
2.39 1486.51 42.05 9018524 0.00 0.00 sbitmap_union_of_diff
1.57 1514.14 27.63 83378 0.00 0.00 insert_expr_in_table
1.33 1537.50 23.36 223375 0.00 0.00 record_one_set
1.04 1555.83 18.33 74953 0.00 0.00 count_or_remove_death_notes
0.92 1571.98 16.16 15 1.08 14.85 jump_optimize_1
0.70 1584.28 12.30 389447 0.00 0.00 sbitmap_a_and_b
0.69 1596.49 12.21 389436 0.00 0.00 sbitmap_a_or_b
Something seems the matter with the data for pre_expr_reaches_here_p_work.
Brad