optimization/3987: propagate_freq enormous performance hit in 3.1

Brad Lucier lucier@math.purdue.edu
Sat Mar 15 14:52:00 GMT 2003


>     Brad, is this report still imminent? If so, then it would
>     classify as a regression, and we should mark it as that.
>     Unfortunately, I don't have access to such a machine...

I don't have 3.3 built for a sparc, but I tried to compile the file
overnight on my alpha with 3.3 and failed because I had only 2 GB 
of RAM and things seized up pretty hard when it hit the disk-based
virtual memory.

So yes, it's still broken for 3.3.  Here are the times for 3.4:

popov-110% /usr/local/gcc-3.4/lib/gcc-lib/alphaev6-unknown-linux-gnu/3.4/cc1 -fPIC -O1 -fschedule-insns2 -fno-math-errno -fno-strict-aliasing -mcpu=21264 -mieee all.i
 __copysignf copysignf __copysign copysign __fabsf fabsf __fabs fabs __floorf __floor floorf floor ___H__20_all ___init_proc ____20_all
Execution times (seconds)
 cfg construction      :   1.27 ( 1%) usr   0.44 (13%) sys   4.55 ( 1%) wall
 cfg cleanup           :   4.96 ( 3%) usr   0.01 ( 0%) sys  12.82 ( 3%) wall
 trivially dead code   :   1.80 ( 1%) usr   0.00 ( 0%) sys   4.64 ( 1%) wall
 life analysis         :  15.74 (10%) usr   0.02 ( 1%) sys  41.93 (10%) wall
 life info update      :   6.48 ( 4%) usr   0.01 ( 0%) sys  18.42 ( 4%) wall
 alias analysis        :   1.35 ( 1%) usr   0.02 ( 0%) sys   3.28 ( 1%) wall
 register scan         :   0.78 ( 1%) usr   0.01 ( 0%) sys   1.49 ( 0%) wall
 rebuild jump labels   :   0.42 ( 0%) usr   0.00 ( 0%) sys   1.20 ( 0%) wall
 preprocessing         :   1.23 ( 1%) usr   0.36 (10%) sys   5.13 ( 1%) wall
 lexical analysis      :   1.63 ( 1%) usr   0.76 (22%) sys   6.03 ( 1%) wall
 parser                :   5.42 ( 4%) usr   0.60 (17%) sys  13.79 ( 3%) wall
 expand                :   1.81 ( 1%) usr   0.09 ( 3%) sys   4.86 ( 1%) wall
 varconst              :   0.28 ( 0%) usr   0.01 ( 0%) sys   0.76 ( 0%) wall
 integration           :   0.53 ( 0%) usr   0.02 ( 1%) sys   1.65 ( 0%) wall
 jump                  :   0.24 ( 0%) usr   0.00 ( 0%) sys   0.49 ( 0%) wall
 CSE                   :   2.80 ( 2%) usr   0.00 ( 0%) sys   7.16 ( 2%) wall
 loop analysis         :   0.15 ( 0%) usr   0.00 ( 0%) sys   0.40 ( 0%) wall
 branch prediction     :  10.49 ( 7%) usr   0.03 ( 1%) sys  27.14 ( 7%) wall
 flow analysis         :   0.25 ( 0%) usr   0.00 ( 0%) sys   0.72 ( 0%) wall
 combiner              :   5.55 ( 4%) usr   0.06 ( 2%) sys  14.02 ( 3%) wall
 if-conversion         :   6.69 ( 4%) usr   0.01 ( 0%) sys  16.89 ( 4%) wall
 local alloc           :   1.99 ( 1%) usr   0.02 ( 0%) sys   4.69 ( 1%) wall
 global alloc          :   6.95 ( 4%) usr   0.59 (17%) sys  19.71 ( 5%) wall
 reload CSE regs       :  61.96 (40%) usr   0.10 ( 3%) sys 161.93 (39%) wall
 flow 2                :   0.47 ( 0%) usr   0.07 ( 2%) sys   1.30 ( 0%) wall
 if-conversion 2       :   0.89 ( 1%) usr   0.00 ( 0%) sys   2.33 ( 1%) wall
 rename registers      :   4.66 ( 3%) usr   0.05 ( 1%) sys  13.61 ( 3%) wall
 scheduling 2          :   3.73 ( 2%) usr   0.06 ( 2%) sys   9.68 ( 2%) wall
 shorten branches      :   0.45 ( 0%) usr   0.01 ( 0%) sys   0.87 ( 0%) wall
 final                 :   1.57 ( 1%) usr   0.03 ( 1%) sys   4.28 ( 1%) wall
 rest of compilation   :   2.26 ( 1%) usr   0.10 ( 3%) sys   5.77 ( 1%) wall
 TOTAL                 : 154.80             3.48           411.93

I believe optimization/2001 has similar causes that are fixed by this patch

http://gcc.gnu.org/ml/gcc-cvs/2003-02/msg00742.html

Brad



More information about the Gcc-bugs mailing list