This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/38474] slow compilation at -O0 due to expand's temp slot goo
- From: "Joost.VandeVondele at mat dot ethz.ch" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 29 May 2012 07:45:36 +0000
- Subject: [Bug middle-end/38474] slow compilation at -O0 due to expand's temp slot goo
- Auto-submitted: auto-generated
- References: <bug-38474-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38474
--- Comment #53 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> 2012-05-29 07:45:36 UTC ---
For the original testcase I have for trunk (gcc version 4.8.0 20120516
(experimental) [trunk revision 187595] (GCC)) very reasonable times (1min) at
-O0, but pretty slow (20min) at -O2. At -O2, all time goes to 'alias stmt
walking : 826.02' in the latter case. Time reports below:
gfortran -ftime-report -ffree-line-length-512 -g -c testcase.f90
Execution times (seconds)
phase setup : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
243 kB ( 0%) ggc
phase parsing : 3.59 ( 6%) usr 0.05 ( 5%) sys 3.64 ( 6%) wall
47592 kB ( 7%) ggc
phase cgraph : 60.02 (94%) usr 0.90 (95%) sys 60.94 (94%) wall
649547 kB (93%) ggc
phase generate : 60.03 (94%) usr 0.90 (95%) sys 60.95 (94%) wall
649948 kB (93%) ggc
garbage collection : 1.04 ( 2%) usr 0.00 ( 0%) sys 1.04 ( 2%) wall
0 kB ( 0%) ggc
callgraph construction : 0.18 ( 0%) usr 0.01 ( 1%) sys 0.20 ( 0%) wall
15909 kB ( 2%) ggc
callgraph optimization : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
201 kB ( 0%) ggc
cfg construction : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
7 kB ( 0%) ggc
cfg cleanup : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
0 kB ( 0%) ggc
CFG verifier : 1.16 ( 2%) usr 0.00 ( 0%) sys 1.18 ( 2%) wall
0 kB ( 0%) ggc
trivially dead code : 0.34 ( 1%) usr 0.00 ( 0%) sys 0.35 ( 1%) wall
0 kB ( 0%) ggc
df scan insns : 1.00 ( 2%) usr 0.25 (26%) sys 1.23 ( 2%) wall
11 kB ( 0%) ggc
df live regs : 0.46 ( 1%) usr 0.00 ( 0%) sys 0.49 ( 1%) wall
0 kB ( 0%) ggc
df reg dead/unused notes: 0.45 ( 1%) usr 0.01 ( 1%) sys 0.47 ( 1%) wall
19416 kB ( 3%) ggc
register information : 0.20 ( 0%) usr 0.01 ( 1%) sys 0.19 ( 0%) wall
0 kB ( 0%) ggc
alias analysis : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall
8336 kB ( 1%) ggc
rebuild jump labels : 0.22 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall
0 kB ( 0%) ggc
parser (global) : 3.59 ( 6%) usr 0.05 ( 5%) sys 3.64 ( 6%) wall
47587 kB ( 7%) ggc
inline heuristics : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
54 kB ( 0%) ggc
tree gimplify : 0.48 ( 1%) usr 0.01 ( 1%) sys 0.49 ( 1%) wall
26304 kB ( 4%) ggc
tree eh : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
39 kB ( 0%) ggc
tree CFG construction : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
190 kB ( 0%) ggc
tree find ref. vars : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
3263 kB ( 0%) ggc
tree PHI insertion : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree SSA rewrite : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
43 kB ( 0%) ggc
tree SSA other : 0.04 ( 0%) usr 0.02 ( 2%) sys 0.01 ( 0%) wall
18 kB ( 0%) ggc
tree operand scan : 0.01 ( 0%) usr 0.01 ( 1%) sys 0.06 ( 0%) wall
118 kB ( 0%) ggc
tree SSA verifier : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
0 kB ( 0%) ggc
tree STMT verifier : 0.58 ( 1%) usr 0.06 ( 6%) sys 0.62 ( 1%) wall
0 kB ( 0%) ggc
callgraph verifier : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.29 ( 0%) wall
0 kB ( 0%) ggc
out of ssa : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
expand vars : 21.72 (34%) usr 0.02 ( 2%) sys 21.74 (34%) wall
10086 kB ( 1%) ggc
expand : 6.18 (10%) usr 0.15 (16%) sys 6.31 (10%) wall
251886 kB (36%) ggc
post expand cleanups : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
1744 kB ( 0%) ggc
integrated RA : 10.75 (17%) usr 0.16 (17%) sys 10.87 (17%) wall
128826 kB (18%) ggc
reload : 5.72 ( 9%) usr 0.15 (16%) sys 5.92 ( 9%) wall
123587 kB (18%) ggc
thread pro- & epilogue : 2.51 ( 4%) usr 0.00 ( 0%) sys 2.50 ( 4%) wall
198 kB ( 0%) ggc
machine dep reorg : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
0 kB ( 0%) ggc
final : 2.61 ( 4%) usr 0.04 ( 4%) sys 2.65 ( 4%) wall
7227 kB ( 1%) ggc
symout : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
4914 kB ( 1%) ggc
rest of compilation : 2.36 ( 4%) usr 0.00 ( 0%) sys 2.35 ( 4%) wall
47578 kB ( 7%) ggc
verify RTL sharing : 1.02 ( 2%) usr 0.00 ( 0%) sys 1.04 ( 2%) wall
0 kB ( 0%) ggc
TOTAL : 63.65 0.95 64.62
697784 kB
gfortran -ftime-report -ffree-line-length-512 -O2 -g -c testcase.f90
Execution times (seconds)
phase setup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
243 kB ( 0%) ggc
phase parsing : 3.59 ( 0%) usr 0.07 ( 5%) sys 3.66 ( 0%) wall
47596 kB ( 7%) ggc
phase cgraph :1031.34 (100%) usr 1.36 (93%) sys1032.77 (100%)
wall 630545 kB (91%) ggc
phase generate :1031.85 (100%) usr 1.39 (95%) sys1033.30 (100%)
wall 643621 kB (93%) ggc
garbage collection : 1.74 ( 0%) usr 0.01 ( 1%) sys 1.74 ( 0%) wall
0 kB ( 0%) ggc
callgraph construction : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%) wall
15908 kB ( 2%) ggc
callgraph optimization : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
201 kB ( 0%) ggc
ipa cp : 0.40 ( 0%) usr 0.12 ( 8%) sys 0.59 ( 0%) wall
6174 kB ( 1%) ggc
ipa reference : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
ipa profile : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
ipa pure const : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
0 kB ( 0%) ggc
cfg construction : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
0 kB ( 0%) ggc
cfg cleanup : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
1 kB ( 0%) ggc
CFG verifier : 1.84 ( 0%) usr 0.01 ( 1%) sys 1.83 ( 0%) wall
0 kB ( 0%) ggc
trivially dead code : 0.46 ( 0%) usr 0.00 ( 0%) sys 0.47 ( 0%) wall
0 kB ( 0%) ggc
df scan insns : 0.75 ( 0%) usr 0.08 ( 5%) sys 0.83 ( 0%) wall
11 kB ( 0%) ggc
df multiple defs : 0.49 ( 0%) usr 0.00 ( 0%) sys 0.49 ( 0%) wall
0 kB ( 0%) ggc
df reaching defs : 1.28 ( 0%) usr 0.02 ( 1%) sys 1.30 ( 0%) wall
0 kB ( 0%) ggc
df live regs : 2.22 ( 0%) usr 0.00 ( 0%) sys 2.22 ( 0%) wall
0 kB ( 0%) ggc
df live&initialized regs: 1.18 ( 0%) usr 0.00 ( 0%) sys 1.19 ( 0%) wall
0 kB ( 0%) ggc
df use-def / def-use chains: 0.46 ( 0%) usr 0.01 ( 1%) sys 0.46 ( 0%)
wall 0 kB ( 0%) ggc
df reg dead/unused notes: 2.26 ( 0%) usr 0.00 ( 0%) sys 2.29 ( 0%) wall
15547 kB ( 2%) ggc
register information : 1.16 ( 0%) usr 0.00 ( 0%) sys 1.15 ( 0%) wall
0 kB ( 0%) ggc
alias analysis : 0.60 ( 0%) usr 0.00 ( 0%) sys 0.59 ( 0%) wall
18809 kB ( 3%) ggc
alias stmt walking : 826.02 (80%) usr 0.21 (14%) sys 826.21 (80%) wall
0 kB ( 0%) ggc
register scan : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
10 kB ( 0%) ggc
rebuild jump labels : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
0 kB ( 0%) ggc
parser (global) : 3.59 ( 0%) usr 0.07 ( 5%) sys 3.66 ( 0%) wall
47591 kB ( 7%) ggc
inline heuristics : 0.38 ( 0%) usr 0.01 ( 1%) sys 0.35 ( 0%) wall
161 kB ( 0%) ggc
integration : 0.01 ( 0%) usr 0.01 ( 1%) sys 0.04 ( 0%) wall
285 kB ( 0%) ggc
tree gimplify : 0.48 ( 0%) usr 0.02 ( 1%) sys 0.49 ( 0%) wall
26299 kB ( 4%) ggc
tree eh : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
39 kB ( 0%) ggc
tree CFG cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
4 kB ( 0%) ggc
tree tail merge : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
0 kB ( 0%) ggc
tree VRP : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall
394 kB ( 0%) ggc
tree copy propagation : 0.20 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall
175 kB ( 0%) ggc
tree find ref. vars : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
3262 kB ( 0%) ggc
tree PTA : 26.17 ( 3%) usr 0.25 (17%) sys 26.41 ( 3%) wall
36473 kB ( 5%) ggc
tree SSA rewrite : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
15685 kB ( 2%) ggc
tree SSA other : 0.01 ( 0%) usr 0.02 ( 1%) sys 0.05 ( 0%) wall
18 kB ( 0%) ggc
tree SSA incremental : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
14 kB ( 0%) ggc
tree operand scan : 0.09 ( 0%) usr 0.01 ( 1%) sys 0.12 ( 0%) wall
8291 kB ( 1%) ggc
dominator optimization : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
46 kB ( 0%) ggc
tree SRA : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
tree CCP : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.16 ( 0%) wall
107 kB ( 0%) ggc
tree reassociation : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
23 kB ( 0%) ggc
tree PRE : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
180 kB ( 0%) ggc
tree FRE : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
313 kB ( 0%) ggc
tree linearize phis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
12 kB ( 0%) ggc
tree forward propagate : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
0 kB ( 0%) ggc
tree conservative DCE : 0.19 ( 0%) usr 0.03 ( 2%) sys 0.25 ( 0%) wall
0 kB ( 0%) ggc
tree aggressive DCE : 0.11 ( 0%) usr 0.02 ( 1%) sys 0.10 ( 0%) wall
295 kB ( 0%) ggc
tree buildin call DCE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree DSE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree rename SSA copies : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
0 kB ( 0%) ggc
tree SSA verifier : 3.58 ( 0%) usr 0.00 ( 0%) sys 3.64 ( 0%) wall
0 kB ( 0%) ggc
tree STMT verifier : 8.91 ( 1%) usr 0.03 ( 2%) sys 8.87 ( 1%) wall
0 kB ( 0%) ggc
tree strlen optimization: 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
callgraph verifier : 0.48 ( 0%) usr 0.00 ( 0%) sys 0.46 ( 0%) wall
0 kB ( 0%) ggc
dominance computation : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
out of ssa : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
0 kB ( 0%) ggc
expand vars : 96.25 ( 9%) usr 0.00 ( 0%) sys 96.26 ( 9%) wall
9993 kB ( 1%) ggc
expand : 1.34 ( 0%) usr 0.06 ( 4%) sys 1.38 ( 0%) wall
119840 kB (17%) ggc
post expand cleanups : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
109 kB ( 0%) ggc
lower subreg : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
0 kB ( 0%) ggc
forward prop : 3.47 ( 0%) usr 0.02 ( 1%) sys 3.48 ( 0%) wall
6588 kB ( 1%) ggc
CSE : 0.99 ( 0%) usr 0.01 ( 1%) sys 1.01 ( 0%) wall
13067 kB ( 2%) ggc
dead code elimination : 0.41 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%) wall
0 kB ( 0%) ggc
dead store elim1 : 0.65 ( 0%) usr 0.02 ( 1%) sys 0.68 ( 0%) wall
1535 kB ( 0%) ggc
dead store elim2 : 2.52 ( 0%) usr 0.00 ( 0%) sys 2.53 ( 0%) wall
4393 kB ( 1%) ggc
CPROP : 1.83 ( 0%) usr 0.00 ( 0%) sys 1.83 ( 0%) wall
10 kB ( 0%) ggc
PRE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
1 kB ( 0%) ggc
CSE 2 : 0.78 ( 0%) usr 0.01 ( 1%) sys 0.78 ( 0%) wall
7470 kB ( 1%) ggc
branch prediction : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
41 kB ( 0%) ggc
combiner : 0.47 ( 0%) usr 0.01 ( 1%) sys 0.48 ( 0%) wall
12 kB ( 0%) ggc
if-conversion : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
22 kB ( 0%) ggc
regmove : 0.40 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%) wall
0 kB ( 0%) ggc
integrated RA : 13.95 ( 1%) usr 0.12 ( 8%) sys 14.05 ( 1%) wall
67921 kB (10%) ggc
reload : 3.03 ( 0%) usr 0.04 ( 3%) sys 3.04 ( 0%) wall
52942 kB ( 8%) ggc
reload CSE regs : 1.24 ( 0%) usr 0.00 ( 0%) sys 1.25 ( 0%) wall
10704 kB ( 2%) ggc
ree : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall
1 kB ( 0%) ggc
thread pro- & epilogue : 0.46 ( 0%) usr 0.00 ( 0%) sys 0.45 ( 0%) wall
256 kB ( 0%) ggc
if-conversion 2 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
22 kB ( 0%) ggc
combine stack adjustments: 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
peephole 2 : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall
15 kB ( 0%) ggc
hard reg cprop : 1.12 ( 0%) usr 0.00 ( 0%) sys 1.11 ( 0%) wall
3 kB ( 0%) ggc
scheduling 2 : 3.33 ( 0%) usr 0.11 ( 8%) sys 3.44 ( 0%) wall
39009 kB ( 6%) ggc
machine dep reorg : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.22 ( 0%) wall
0 kB ( 0%) ggc
reorder blocks : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
2 kB ( 0%) ggc
final : 0.87 ( 0%) usr 0.02 ( 1%) sys 0.92 ( 0%) wall
11744 kB ( 2%) ggc
symout : 0.74 ( 0%) usr 0.06 ( 4%) sys 0.78 ( 0%) wall
111089 kB (16%) ggc
variable tracking : 0.61 ( 0%) usr 0.00 ( 0%) sys 0.61 ( 0%) wall
29367 kB ( 4%) ggc
var-tracking dataflow : 3.52 ( 0%) usr 0.00 ( 0%) sys 3.52 ( 0%) wall
0 kB ( 0%) ggc
var-tracking emit : 4.20 ( 0%) usr 0.00 ( 0%) sys 4.20 ( 0%) wall
5616 kB ( 1%) ggc
rest of compilation : 1.16 ( 0%) usr 0.02 ( 1%) sys 1.27 ( 0%) wall
2733 kB ( 0%) ggc
remove unused locals : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
0 kB ( 0%) ggc
address taken : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
0 kB ( 0%) ggc
unaccounted todo : 0.62 ( 0%) usr 0.03 ( 2%) sys 0.66 ( 0%) wall
0 kB ( 0%) ggc
verify RTL sharing : 3.87 ( 0%) usr 0.00 ( 0%) sys 3.89 ( 0%) wall
0 kB ( 0%) ggc
TOTAL :1035.46 1.46 1036.99
691461 kB