[Bug middle-end/27733] Large compile time regression
danglin at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Mon May 22 22:26:00 GMT 2006
------- Comment #2 from danglin at gcc dot gnu dot org 2006-05-22 22:26 -------
Execution times (seconds)
callgraph construction: 0.06 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
142 kB ( 1%) ggc
callgraph optimization: 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
16 kB ( 0%) ggc
ipa reference : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
4 kB ( 0%) ggc
ipa pure const : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
ipa type escape : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
0 kB ( 0%) ggc
cfg cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
17 kB ( 0%) ggc
trivially dead code : 0.06 ( 0%) usr 0.01 ( 0%) sys 0.03 ( 0%) wall
0 kB ( 0%) ggc
life analysis : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
84 kB ( 1%) ggc
life info update : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
10 kB ( 0%) ggc
alias analysis : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
225 kB ( 1%) ggc
register scan : 0.06 ( 0%) usr 0.01 ( 0%) sys 0.07 ( 0%) wall
1 kB ( 0%) ggc
rebuild jump labels : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
preprocessing : 0.37 ( 0%) usr 0.45 (11%) sys 1.99 ( 0%) wall
1495 kB (10%) ggc
lexical analysis : 0.07 ( 0%) usr 0.89 (21%) sys 1.00 ( 0%) wall
0 kB ( 0%) ggc
parser : 0.55 ( 0%) usr 0.45 (11%) sys 0.88 ( 0%) wall
4186 kB (27%) ggc
integration : 0.08 ( 0%) usr 0.02 ( 0%) sys 0.11 ( 0%) wall
1175 kB ( 8%) ggc
tree gimplify : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall
752 kB ( 5%) ggc
tree eh : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree CFG construction : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
412 kB ( 3%) ggc
tree CFG cleanup : 0.06 ( 0%) usr 0.01 ( 0%) sys 0.10 ( 0%) wall
10 kB ( 0%) ggc
tree VRP : 0.06 ( 0%) usr 0.02 ( 0%) sys 0.10 ( 0%) wall
130 kB ( 1%) ggc
tree copy propagation : 0.07 ( 0%) usr 0.01 ( 0%) sys 0.04 ( 0%) wall
90 kB ( 1%) ggc
tree find ref. vars : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
152 kB ( 1%) ggc
tree PTA : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall
260 kB ( 2%) ggc
tree alias analysis : 0.02 ( 0%) usr 0.03 ( 1%) sys 0.08 ( 0%) wall
130 kB ( 1%) ggc
tree PHI insertion : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
38 kB ( 0%) ggc
tree SSA rewrite : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
228 kB ( 1%) ggc
tree SSA other : 0.02 ( 0%) usr 0.01 ( 0%) sys 0.04 ( 0%) wall
0 kB ( 0%) ggc
tree SSA incremental : 0.04 ( 0%) usr 0.02 ( 0%) sys 0.06 ( 0%) wall
47 kB ( 0%) ggc
tree operand scan : 0.20 ( 0%) usr 0.12 ( 3%) sys 0.25 ( 0%) wall
209 kB ( 1%) ggc
dominator optimization: 0.13 ( 0%) usr 0.01 ( 0%) sys 0.15 ( 0%) wall
313 kB ( 2%) ggc
tree SRA : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree STORE-CCP : 0.01 ( 0%) usr 0.01 ( 0%) sys 0.01 ( 0%) wall
19 kB ( 0%) ggc
tree CCP : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
20 kB ( 0%) ggc
tree PRE : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
216 kB ( 1%) ggc
tree FRE : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
145 kB ( 1%) ggc
tree code sinking : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
1 kB ( 0%) ggc
tree forward propagate: 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
17 kB ( 0%) ggc
tree conservative DCE : 0.01 ( 0%) usr 0.01 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree aggressive DCE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
tree DSE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
7 kB ( 0%) ggc
tree loop bounds : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
34 kB ( 0%) ggc
tree canonical iv : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
23 kB ( 0%) ggc
complete unrolling : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
21 kB ( 0%) ggc
tree iv optimization : 0.11 ( 0%) usr 0.02 ( 0%) sys 0.12 ( 0%) wall
360 kB ( 2%) ggc
tree copy headers : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
86 kB ( 1%) ggc
tree SSA uncprop : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree SSA to normal : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
141 kB ( 1%) ggc
tree NRV optimization : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
dominance frontiers : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
expand :5242.96 (100%) usr 2.06 (49%) sys5333.55 (100%) wall
1058 kB ( 7%) ggc
jump : 0.00 ( 0%) usr 0.01 ( 0%) sys 0.00 ( 0%) wall
4 kB ( 0%) ggc
CSE : 0.22 ( 0%) usr 0.00 ( 0%) sys 0.26 ( 0%) wall
57 kB ( 0%) ggc
loop analysis : 0.08 ( 0%) usr 0.01 ( 0%) sys 0.10 ( 0%) wall
209 kB ( 1%) ggc
global CSE : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
CPROP 1 : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
54 kB ( 0%) ggc
PRE : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
11 kB ( 0%) ggc
CPROP 2 : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
50 kB ( 0%) ggc
bypass jumps : 0.05 ( 0%) usr 0.01 ( 0%) sys 0.05 ( 0%) wall
47 kB ( 0%) ggc
CSE 2 : 0.17 ( 0%) usr 0.01 ( 0%) sys 0.17 ( 0%) wall
30 kB ( 0%) ggc
branch prediction : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
45 kB ( 0%) ggc
combiner : 0.23 ( 0%) usr 0.01 ( 0%) sys 0.20 ( 0%) wall
261 kB ( 2%) ggc
if-conversion : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
9 kB ( 0%) ggc
regmove : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
3 kB ( 0%) ggc
scheduling : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
302 kB ( 2%) ggc
local alloc : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
73 kB ( 0%) ggc
global alloc : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
153 kB ( 1%) ggc
reload CSE regs : 0.06 ( 0%) usr 0.01 ( 0%) sys 0.09 ( 0%) wall
134 kB ( 1%) ggc
flow 2 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
150 kB ( 1%) ggc
if-conversion 2 : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
peephole 2 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
3 kB ( 0%) ggc
rename registers : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
1 kB ( 0%) ggc
scheduling 2 : 0.14 ( 0%) usr 0.01 ( 0%) sys 0.15 ( 0%) wall
177 kB ( 1%) ggc
delay branch sched : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
250 kB ( 2%) ggc
reorder blocks : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
50 kB ( 0%) ggc
shorten branches : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
final : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
82 kB ( 1%) ggc
symout : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
TOTAL :5247.66 4.24 5342.10
15337 kB
These are the pass times in the report sent to me. As can be seen, all
the time is spent in expand.
It appears the problem is the function free_area_init_node. I see the
following
backtrace:
Assembling functions:
zone_watermark_ok nr_free_zone_pages read_page_state_offset
__mod_page_state_offset mod_page_state_offset __get_zone_counts
memmap_init_zone zone_init_free_lists zonetable_add frag_stop vmstat_next
page_alloc_init calculate_totalreserve_pages setup_per_zone_lowmem_reserve
frag_next frag_start {GC 6427k -> 3960k} get_zone_counts vmstat_show
vmstat_stop zoneinfo_show lowmem_reserve_ratio_sysctl_handler
percpu_pagelist_fraction_sysctl_handler setup_per_zone_pages_min nr_free_pages
min_free_kbytes_sysctl_handler free_area_init_node
Program received signal SIGINT, Interrupt.
0x004eec44 in $$divU ()
(gdb) bt
#0 0x004eec44 in $$divU ()
#1 0x004f11fc in __umoddi3 ()
#2 0x00216490 in synth_mult (alg_out=0xc0363c60, t=<value optimized out>,
cost_limit=0xc0363bc8, mode=DImode) at ../../gcc/gcc/expmed.c:2717
#3 0x00216320 in synth_mult (alg_out=0xc0363860, t=<value optimized out>,
cost_limit=0xc03637c8, mode=DImode) at ../../gcc/gcc/expmed.c:2625
#4 0x00215e6c in synth_mult (alg_out=0xc0363460, t=<value optimized out>,
cost_limit=0xc03633c8, mode=DImode) at ../../gcc/gcc/expmed.c:2584
#5 0x00215f30 in synth_mult (alg_out=0xc0363060, t=<value optimized out>,
cost_limit=0xc0362fc8, mode=DImode) at ../../gcc/gcc/expmed.c:2645
#6 0x00216158 in synth_mult (alg_out=0xc0362c60, t=<value optimized out>,
cost_limit=0xc0362bc8, mode=DImode) at ../../gcc/gcc/expmed.c:2795
#7 0x00216570 in synth_mult (alg_out=0xc0362860, t=<value optimized out>,
cost_limit=0xc03627c8, mode=DImode) at ../../gcc/gcc/expmed.c:2698
#8 0x00216838 in synth_mult (alg_out=0xc0362460, t=<value optimized out>,
cost_limit=0xc03623c8, mode=DImode) at ../../gcc/gcc/expmed.c:2770
#9 0x00216838 in synth_mult (alg_out=0xc0362060, t=<value optimized out>,
cost_limit=0xc0361fc8, mode=DImode) at ../../gcc/gcc/expmed.c:2770
#10 0x00216838 in synth_mult (alg_out=0xc0361c60, t=<value optimized out>,
cost_limit=0xc0361bc8, mode=DImode) at ../../gcc/gcc/expmed.c:2770
#11 0x00215e6c in synth_mult (alg_out=0xc0361860, t=<value optimized out>,
cost_limit=0xc03617c8, mode=DImode) at ../../gcc/gcc/expmed.c:2584
#12 0x00216570 in synth_mult (alg_out=0xc0361460, t=<value optimized out>,
---Type <return> to continue, or q <return> to quit---
cost_limit=0xc03613c8, mode=DImode) at ../../gcc/gcc/expmed.c:2698
#13 0x00215f30 in synth_mult (alg_out=0xc0361060, t=<value optimized out>,
cost_limit=0xc0360fc8, mode=DImode) at ../../gcc/gcc/expmed.c:2645
#14 0x00216158 in synth_mult (alg_out=0xc0360c60, t=<value optimized out>,
cost_limit=0xc0360bc8, mode=DImode) at ../../gcc/gcc/expmed.c:2795
#15 0x00215e6c in synth_mult (alg_out=0xc0360860, t=<value optimized out>,
cost_limit=0xc03607c8, mode=DImode) at ../../gcc/gcc/expmed.c:2584
#16 0x00216320 in synth_mult (alg_out=0xc03605e0, t=<value optimized out>,
cost_limit=0xc03603c8, mode=DImode) at ../../gcc/gcc/expmed.c:2625
#17 0x00216838 in synth_mult (alg_out=0xc0360024, t=<value optimized out>,
cost_limit=0xc0360208, mode=DImode) at ../../gcc/gcc/expmed.c:2770
#18 0x00216a30 in choose_mult_variant (mode=DImode, val=-1069376468041133427,
alg=0xc0360024, variant=0xc0360008, mult_cost=80)
at ../../gcc/gcc/expmed.c:2887
#19 0x002174f8 in expand_mult (mode=DImode, op0=<value optimized out>,
op1=0x405cc810, target=0x0, unsignedp=0) at ../../gcc/gcc/expmed.c:3188
#20 0x00151904 in multiply_by_cost (cst=-1069376468041133427, mode=DImode)
at ../../gcc/gcc/tree-ssa-loop-ivopts.c:3180
#21 0x001552a4 in get_computation_cost (data=<value optimized out>,
use=<value optimized out>, cand=<value optimized out>,
address_p=<value optimized out>, depends_on=0x0)
at ../../gcc/gcc/tree-ssa-loop-ivopts.c:3314
#22 0x0015750c in determine_use_iv_cost (data=0xc035fc88, use=0xffff,
---Type <return> to continue, or q <return> to quit---
cand=0x6bf020) at ../../gcc/gcc/tree-ssa-loop-ivopts.c:3871
#23 0x0015ae98 in determine_use_iv_costs (data=0xc035fc88)
at ../../gcc/gcc/tree-ssa-loop-ivopts.c:4108
#24 0x0015be34 in tree_ssa_iv_optimize_loop (data=0xc035fc88,
loop=<value optimized out>) at ../../gcc/gcc/tree-ssa-loop-ivopts.c:5765
#25 0x0015c730 in tree_ssa_iv_optimize (loops=0x672568)
at ../../gcc/gcc/tree-ssa-loop-ivopts.c:5817
#26 0x00129d34 in tree_ssa_loop_ivopts () at ../../gcc/gcc/tree-ssa-loop.c:457
#27 0x00396fc4 in execute_one_pass (pass=0x59ce18)
at ../../gcc/gcc/passes.c:864
#28 0x00397178 in execute_pass_list (pass=0x59ce18)
at ../../gcc/gcc/passes.c:911
#29 0x0039718c in execute_pass_list (pass=0x59d088)
at ../../gcc/gcc/passes.c:912
#30 0x0039718c in execute_pass_list (pass=0x59ca04)
at ../../gcc/gcc/passes.c:912
#31 0x000bbe34 in tree_rest_of_compilation (fndecl=0x40461100)
at ../../gcc/gcc/tree-optimize.c:418
#32 0x00030dcc in c_expand_body (fndecl=0x6) at ../../gcc/gcc/c-decl.c:6723
#33 0x003df510 in cgraph_expand_function (node=0x400b7180)
at ../../gcc/gcc/cgraphunit.c:1108
#34 0x003e0bc0 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1173
#35 0x00033c1c in c_write_global_declarations () at ../../gcc/gcc/c-decl.c:7838
---Type <return> to continue, or q <return> to quit---
#36 0x0035c2e0 in toplev_main (argc=<value optimized out>,
argv=<value optimized out>) at ../../gcc/gcc/toplev.c:1012
#37 0x4072d6d8 in __libc_start_main () from /lib/libc.so.6
#38 0x0001be98 in _start () at ../sysdeps/hppa/elf/start.S:84
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27733
More information about the Gcc-bugs
mailing list