[Bug tree-optimization/26854] Inordinate compile times on large routines

lucier at math dot purdue dot edu gcc-bugzilla@gcc.gnu.org
Thu Dec 7 21:51:00 GMT 2006



------- Comment #21 from lucier at math dot purdue dot edu  2006-12-07 21:51 -------
Subject: Re:  Inordinate compile times on large routines

I reran things on mainline on my patched RHEL box.  It took almost  
7GB of memory, peak, to compile this routine (this was very near the  
end of cc1).

All things considered, on mainline the CPU time for this routine is  
not so bad (alias analysis and FRE are two obvious hot-spots), but  
the memory required is very large.

Back to 4.2.0 branch for more testing ...

euler-157% time /pkgs/gcc-mainline/bin/gcc -no-cpp-precomp -Wall -W - 
Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math - 
fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common - 
ftime-report -fmem-report -c all.i
gcc: unrecognized option '-no-cpp-precomp'
Memory still allocated at the end of the compilation process
Size   Allocated        Used    Overhead
8             16k         13k        480
16          8472k       8083k        182k
64            39M         22M        625k
256         4096        2816          56
512         4096        1024          56
1024         236k        236k       3304
2048          40k         26k        560
4096          80k         80k       1120
8192          64k         64k        448
16384         16k         16k         56
32768         64k         64k        112
65536        960k        960k        840
131072        512k        512k        224
262144        768k        768k        168
1048576       7168k       5120k        392
2097152       2048k       2048k         56
112          144k         92k       2016
208           44k         41k        616
192           14M      10094k        198k
160           40k         37k        560
176         7972k       4786k        108k
96            18M         16M        263k
448           28k         27k        392
128         9696k       6860k        132k
48            30M         13M        484k
224          424k        385k       5936
32            72M         72M       1296k
80            65M         38M        923k
Total        278M        201M       4231k

String pool
entries         125055
identifiers     125055 (100.00%)
slots           262144
bytes           1675k (137k overhead)
table size      2048k
coll/search     0.8888
ins/search      0.1979
avg. entry      13.72 bytes (+/- 8.99)
longest entry   71

??? tree nodes created

(No per-node statistics)
Type hash: size 1021, 577 elements, 0.695294 collisions
DECL_DEBUG_EXPR  hash: size 8191, 2893 elements, 1.005820 collisions
DECL_VALUE_EXPR  hash: size 1021, 0 elements, 0.000000 collisions

Execution times (seconds)
garbage collection    :   1.01 ( 0%) usr   0.00 ( 0%) sys   1.01  
( 0%) wall       0 kB ( 0%) ggc
callgraph construction:   0.61 ( 0%) usr   0.09 ( 1%) sys   0.72  
( 0%) wall   17017 kB ( 2%) ggc
callgraph optimization:   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03  
( 0%) wall       0 kB ( 0%) ggc
ipa reference         :   0.17 ( 0%) usr   0.05 ( 0%) sys   0.23  
( 0%) wall       7 kB ( 0%) ggc
cfg cleanup           :   7.69 ( 2%) usr   0.00 ( 0%) sys   8.03  
( 2%) wall      37 kB ( 0%) ggc
trivially dead code   :   0.96 ( 0%) usr   0.00 ( 0%) sys   1.00  
( 0%) wall       0 kB ( 0%) ggc
life analysis         :  19.95 ( 4%) usr   0.01 ( 0%) sys  20.77  
( 4%) wall   12767 kB ( 2%) ggc
life info update      :   0.57 ( 0%) usr   0.00 ( 0%) sys   0.57  
( 0%) wall       0 kB ( 0%) ggc
alias analysis        :   0.80 ( 0%) usr   0.00 ( 0%) sys   0.80  
( 0%) wall    7174 kB ( 1%) ggc
register scan         :   0.42 ( 0%) usr   0.00 ( 0%) sys   0.46  
( 0%) wall       1 kB ( 0%) ggc
rebuild jump labels   :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.10  
( 0%) wall       0 kB ( 0%) ggc
preprocessing         :   0.51 ( 0%) usr   0.90 ( 8%) sys   1.26  
( 0%) wall    1794 kB ( 0%) ggc
lexical analysis      :   0.57 ( 0%) usr   1.42 (12%) sys   2.33  
( 0%) wall       0 kB ( 0%) ggc
parser                :   1.29 ( 0%) usr   0.95 ( 8%) sys   2.29  
( 0%) wall   59589 kB ( 8%) ggc
integration           :   0.24 ( 0%) usr   0.09 ( 1%) sys   0.35  
( 0%) wall       0 kB ( 0%) ggc
tree gimplify         :   0.74 ( 0%) usr   0.04 ( 0%) sys   0.83  
( 0%) wall   42732 kB ( 6%) ggc
tree eh               :   0.07 ( 0%) usr   0.00 ( 0%) sys   0.08  
( 0%) wall       0 kB ( 0%) ggc
tree CFG construction :   0.30 ( 0%) usr   0.05 ( 0%) sys   0.35  
( 0%) wall   59312 kB ( 8%) ggc
tree CFG cleanup      :   3.53 ( 1%) usr   0.00 ( 0%) sys   3.51  
( 1%) wall    3716 kB ( 1%) ggc
tree copy propagation :   1.21 ( 0%) usr   0.00 ( 0%) sys   1.22  
( 0%) wall    2220 kB ( 0%) ggc
tree store copy prop  :   0.41 ( 0%) usr   0.00 ( 0%) sys   0.41  
( 0%) wall     576 kB ( 0%) ggc
tree find ref. vars   :   0.11 ( 0%) usr   0.00 ( 0%) sys   0.11  
( 0%) wall    1186 kB ( 0%) ggc
tree PTA              :   2.52 ( 1%) usr   0.03 ( 0%) sys   2.57  
( 1%) wall    2280 kB ( 0%) ggc
tree alias analysis   : 121.67 (27%) usr   0.50 ( 4%) sys 123.10  
(26%) wall   18481 kB ( 3%) ggc
tree PHI insertion    :   1.40 ( 0%) usr   0.07 ( 1%) sys   1.54  
( 0%) wall   69532 kB ( 9%) ggc
tree SSA rewrite      :   2.40 ( 1%) usr   0.02 ( 0%) sys   2.47  
( 1%) wall   28127 kB ( 4%) ggc
tree SSA other        :   0.09 ( 0%) usr   0.10 ( 1%) sys   0.23  
( 0%) wall       0 kB ( 0%) ggc
tree SSA incremental  :   8.18 ( 2%) usr   0.09 ( 1%) sys   8.20  
( 2%) wall   19181 kB ( 3%) ggc
tree operand scan     :   1.47 ( 0%) usr   0.58 ( 5%) sys   2.01  
( 0%) wall   26491 kB ( 4%) ggc
dominator optimization:   2.51 ( 1%) usr   0.01 ( 0%) sys   2.55  
( 1%) wall   46004 kB ( 6%) ggc
tree STORE-CCP        :   0.58 ( 0%) usr   0.00 ( 0%) sys   0.58  
( 0%) wall    1024 kB ( 0%) ggc
tree CCP              :   0.61 ( 0%) usr   0.00 ( 0%) sys   0.61  
( 0%) wall    1024 kB ( 0%) ggc
tree PHI const/copy prop:   0.19 ( 0%) usr   0.00 ( 0%) sys   0.20  
( 0%) wall       9 kB ( 0%) ggc
tree split crit edges :   0.09 ( 0%) usr   0.02 ( 0%) sys   0.12  
( 0%) wall   27005 kB ( 4%) ggc
tree reassociation    :   0.45 ( 0%) usr   0.01 ( 0%) sys   0.45  
( 0%) wall       0 kB ( 0%) ggc
tree FRE              : 194.08 (42%) usr   0.18 ( 2%) sys 202.72  
(42%) wall   23470 kB ( 3%) ggc
tree code sinking     :   0.46 ( 0%) usr   0.00 ( 0%) sys   0.48  
( 0%) wall       0 kB ( 0%) ggc
tree linearize phis   :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.13  
( 0%) wall       0 kB ( 0%) ggc
tree forward propagate:   0.11 ( 0%) usr   0.00 ( 0%) sys   0.11  
( 0%) wall       0 kB ( 0%) ggc
tree conservative DCE :   1.14 ( 0%) usr   0.00 ( 0%) sys   1.15  
( 0%) wall       0 kB ( 0%) ggc
tree aggressive DCE   :   0.40 ( 0%) usr   0.00 ( 0%) sys   0.41  
( 0%) wall       0 kB ( 0%) ggc
tree DSE              :   0.32 ( 0%) usr   0.00 ( 0%) sys   0.31  
( 0%) wall       0 kB ( 0%) ggc
PHI merge             :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00  
( 0%) wall       2 kB ( 0%) ggc
tree loop bounds      :   0.14 ( 0%) usr   0.00 ( 0%) sys   0.14  
( 0%) wall       0 kB ( 0%) ggc
loop invariant motion :   0.29 ( 0%) usr   0.00 ( 0%) sys   0.30  
( 0%) wall       0 kB ( 0%) ggc
tree canonical iv     :   0.07 ( 0%) usr   0.00 ( 0%) sys   0.08  
( 0%) wall       0 kB ( 0%) ggc
scev constant prop    :   0.58 ( 0%) usr   0.00 ( 0%) sys   0.57  
( 0%) wall    1756 kB ( 0%) ggc
complete unrolling    :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04  
( 0%) wall       0 kB ( 0%) ggc
tree iv optimization  :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00  
( 0%) wall       0 kB ( 0%) ggc
tree loop init        :   2.07 ( 0%) usr   0.07 ( 1%) sys   2.17  
( 0%) wall   41825 kB ( 6%) ggc
tree loop fini        :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01  
( 0%) wall       0 kB ( 0%) ggc
tree copy headers     :   0.11 ( 0%) usr   0.00 ( 0%) sys   0.11  
( 0%) wall       1 kB ( 0%) ggc
tree SSA uncprop      :   0.21 ( 0%) usr   0.00 ( 0%) sys   0.21  
( 0%) wall       0 kB ( 0%) ggc
tree SSA to normal    :  30.22 ( 7%) usr   0.07 ( 1%) sys  30.74  
( 6%) wall   54480 kB ( 7%) ggc
tree rename SSA copies:   0.33 ( 0%) usr   0.00 ( 0%) sys   0.34  
( 0%) wall       0 kB ( 0%) ggc
dominance frontiers   :   0.41 ( 0%) usr   0.00 ( 0%) sys   0.40  
( 0%) wall       0 kB ( 0%) ggc
dominance computation :   2.01 ( 0%) usr   0.01 ( 0%) sys   2.04  
( 0%) wall       0 kB ( 0%) ggc
expand                :   5.02 ( 1%) usr   0.12 ( 1%) sys   5.29  
( 1%) wall   93938 kB (13%) ggc
varconst              :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01  
( 0%) wall       6 kB ( 0%) ggc
jump                  :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.06  
( 0%) wall       0 kB ( 0%) ggc
CSE                   :   0.55 ( 0%) usr   0.01 ( 0%) sys   0.58  
( 0%) wall     130 kB ( 0%) ggc
loop analysis         :  17.46 ( 4%) usr   5.59 (48%) sys  24.20  
( 5%) wall    5483 kB ( 1%) ggc
branch prediction     :   0.75 ( 0%) usr   0.00 ( 0%) sys   0.74  
( 0%) wall    1532 kB ( 0%) ggc
flow analysis         :   0.14 ( 0%) usr   0.00 ( 0%) sys   0.15  
( 0%) wall       0 kB ( 0%) ggc
combiner              :   1.66 ( 0%) usr   0.01 ( 0%) sys   1.68  
( 0%) wall   21082 kB ( 3%) ggc
if-conversion         :   0.53 ( 0%) usr   0.00 ( 0%) sys   0.54  
( 0%) wall     350 kB ( 0%) ggc
mode switching        :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01  
( 0%) wall       0 kB ( 0%) ggc
local alloc           :   1.29 ( 0%) usr   0.00 ( 0%) sys   1.30  
( 0%) wall    7039 kB ( 1%) ggc
global alloc          :   7.10 ( 2%) usr   0.41 ( 3%) sys   7.52  
( 2%) wall    6574 kB ( 1%) ggc
reload CSE regs       :   0.75 ( 0%) usr   0.00 ( 0%) sys   0.73  
( 0%) wall   10842 kB ( 1%) ggc
flow 2                :   0.37 ( 0%) usr   0.00 ( 0%) sys   0.38  
( 0%) wall    3114 kB ( 0%) ggc
if-conversion 2       :   0.21 ( 0%) usr   0.00 ( 0%) sys   0.21  
( 0%) wall       9 kB ( 0%) ggc
rename registers      :   0.54 ( 0%) usr   0.04 ( 0%) sys   0.58  
( 0%) wall      24 kB ( 0%) ggc
scheduling 2          :   2.36 ( 1%) usr   0.04 ( 0%) sys   2.40  
( 0%) wall   10954 kB ( 1%) ggc
machine dep reorg     :   0.44 ( 0%) usr   0.00 ( 0%) sys   0.44  
( 0%) wall     135 kB ( 0%) ggc
final                 :   1.06 ( 0%) usr   0.01 ( 0%) sys   1.08  
( 0%) wall    2050 kB ( 0%) ggc
TOTAL                 : 456.98            11.72            
481.71             734771 kB
457.718u 12.529s 8:03.35 97.2%  0+0k 0+0io 0pf+0w
euler-158% /pkgs/gcc-mainline/bin/gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/pkgs/gcc-mainline --with-gmp=/ 
pkgs/gmp-4.2.1 --with-mpfr=/pkgs/gmp-4.2.1 --enable-checking=no -- 
enable-languages=c
Thread model: posix
gcc version 4.3.0 20061207 (experimental)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854



More information about the Gcc-bugs mailing list