This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/45422] [4.6 Regression] compile time increases 3x.
- From: "xinliangli at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 21 Jan 2011 19:58:45 +0000
- Subject: [Bug middle-end/45422] [4.6 Regression] compile time increases 3x.
- Auto-submitted: auto-generated
- References: <bug-45422-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45422
--- Comment #30 from davidxl <xinliangli at gmail dot com> 2011-01-21 19:58:41 UTC ---
(In reply to comment #29)
> (In reply to comment #28)
> > David, any progress with this?
>
> The cost function fix to make sure solution set does not become too big will be
> probably very involved and won't be availlable in 4.6 time frame. I will get a
> workaround using Richard's suggestion -- terminate the iterating loop when slow
> convergence is detected and some limit is reached.
>
> David
Two observations:
1) I can not reproduce the timing by Joost -- see below. Can someone else
measure the time independently?
2) Limiting the iteration count of ivopt improvement loop does not help that
much: from unlimited (can be ~40 in this case) to max iteration of 5 only
cutdown total compile time by 2s.
The following is the timing of the trunk compiler. Options:
-O2 -ftime-report -cpp -fbounds-check -g -O3 -ffast-math -funroll-loops
-ftree-vectorize -march=native -ffree-form
parser : 0.67 ( 1%) usr 0.09 ( 6%) sys 0.77 ( 1%) wall
53556 kB ( 5%) ggc
inline heuristics : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall
0 kB ( 0%) ggc
tree gimplify : 0.35 ( 1%) usr 0.03 ( 2%) sys 0.38 ( 1%) wall
48426 kB ( 4%) ggc
tree eh : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
tree CFG construction : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
11978 kB ( 1%) ggc
tree CFG cleanup : 0.68 ( 1%) usr 0.02 ( 1%) sys 0.64 ( 1%) wall
2484 kB ( 0%) ggc
tree VRP : 0.83 ( 1%) usr 0.02 ( 1%) sys 1.28 ( 2%) wall
64371 kB ( 6%) ggc
tree copy propagation : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.16 ( 0%) wall
1267 kB ( 0%) ggc
tree find ref. vars : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
3806 kB ( 0%) ggc
tree PTA : 0.82 ( 1%) usr 0.00 ( 0%) sys 0.80 ( 1%) wall
5497 kB ( 0%) ggc
tree PHI insertion : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
3194 kB ( 0%) ggc
tree SSA rewrite : 0.23 ( 0%) usr 0.01 ( 1%) sys 0.21 ( 0%) wall
14021 kB ( 1%) ggc
tree SSA other : 0.06 ( 0%) usr 0.01 ( 1%) sys 0.09 ( 0%) wall
435 kB ( 0%) ggc
tree SSA incremental : 0.65 ( 1%) usr 0.02 ( 1%) sys 0.65 ( 1%) wall
6735 kB ( 1%) ggc
tree operand scan : 0.37 ( 1%) usr 0.14 ( 9%) sys 0.53 ( 1%) wall
47156 kB ( 4%) ggc
dominator optimization: 0.38 ( 1%) usr 0.02 ( 1%) sys 0.50 ( 1%) wall
6948 kB ( 1%) ggc
tree SRA : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree CCP : 0.93 ( 1%) usr 0.01 ( 1%) sys 1.02 ( 2%) wall
4975 kB ( 0%) ggc
tree PHI const/copy prop: 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
124 kB ( 0%) ggc
tree split crit edges : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
1743 kB ( 0%) ggc
tree reassociation : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall
5095 kB ( 0%) ggc
tree PRE : 0.64 ( 1%) usr 0.00 ( 0%) sys 0.64 ( 1%) wall
9790 kB ( 1%) ggc
tree FRE : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.31 ( 0%) wall
5410 kB ( 0%) ggc
tree code sinking : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
956 kB ( 0%) ggc
tree linearize phis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
tree forward propagate: 0.17 ( 0%) usr 0.00 ( 0%) sys 0.16 ( 0%) wall
11005 kB ( 1%) ggc
tree phiprop : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree conservative DCE : 0.04 ( 0%) usr 0.02 ( 1%) sys 0.06 ( 0%) wall
944 kB ( 0%) ggc
tree aggressive DCE : 0.31 ( 0%) usr 0.03 ( 2%) sys 0.40 ( 1%) wall
15336 kB ( 1%) ggc
tree DSE : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
225 kB ( 0%) ggc
tree loop bounds : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall
6744 kB ( 1%) ggc
tree loop invariant motion: 0.05 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%)
wall 485 kB ( 0%) ggc
tree canonical iv : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
3128 kB ( 0%) ggc
scev constant prop : 0.04 ( 0%) usr 0.01 ( 1%) sys 0.03 ( 0%) wall
1924 kB ( 0%) ggc
complete unrolling : 0.79 ( 1%) usr 0.05 ( 3%) sys 0.85 ( 1%) wall
91364 kB ( 8%) ggc
tree vectorization : 0.34 ( 1%) usr 0.00 ( 0%) sys 0.37 ( 1%) wall
25117 kB ( 2%) ggc
tree slp vectorization: 0.41 ( 1%) usr 0.00 ( 0%) sys 0.35 ( 1%) wall
19256 kB ( 2%) ggc
tree loop distribution: 0.04 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
850 kB ( 0%) ggc
tree iv optimization : 11.14 (18%) usr 0.33 (22%) sys 12.24 (18%) wall
141300 kB (12%) ggc
predictive commoning : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
2696 kB ( 0%) ggc
tree loop init : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
1220 kB ( 0%) ggc
tree loop fini : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree copy headers : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
1652 kB ( 0%) ggc
tree SSA uncprop : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
0 kB ( 0%) ggc
tree rename SSA copies: 0.03 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
0 kB ( 0%) ggc
dominance frontiers : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
0 kB ( 0%) ggc
dominance computation : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.32 ( 0%) wall
0 kB ( 0%) ggc
control dependences : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
out of ssa : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
130 kB ( 0%) ggc
expand vars : 0.09 ( 0%) usr 0.01 ( 1%) sys 0.10 ( 0%) wall
9013 kB ( 1%) ggc
expand : 0.40 ( 1%) usr 0.01 ( 1%) sys 0.52 ( 1%) wall
57975 kB ( 5%) ggc
post expand cleanups : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
3355 kB ( 0%) ggc
lower subreg : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall
0 kB ( 0%) ggc
forward prop : 0.33 ( 1%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall
11129 kB ( 1%) ggc
CSE : 0.97 ( 2%) usr 0.01 ( 1%) sys 0.99 ( 1%) wall
207 kB ( 0%) ggc
dead code elimination : 0.26 ( 0%) usr 0.00 ( 0%) sys 0.32 ( 0%) wall
0 kB ( 0%) ggc
dead store elim1 : 0.49 ( 1%) usr 0.00 ( 0%) sys 0.45 ( 1%) wall
11519 kB ( 1%) ggc
dead store elim2 : 0.41 ( 1%) usr 0.00 ( 0%) sys 0.46 ( 1%) wall
13060 kB ( 1%) ggc
loop analysis : 0.03 ( 0%) usr 0.01 ( 1%) sys 0.02 ( 0%) wall
1626 kB ( 0%) ggc
loop invariant motion : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall
505 kB ( 0%) ggc
loop unswitching : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
0 kB ( 0%) ggc
loop unrolling : 1.59 ( 3%) usr 0.02 ( 1%) sys 1.64 ( 2%) wall
102158 kB ( 9%) ggc
CPROP : 0.69 ( 1%) usr 0.02 ( 1%) sys 0.77 ( 1%) wall
13208 kB ( 1%) ggc
PRE : 0.58 ( 1%) usr 0.00 ( 0%) sys 0.58 ( 1%) wall
1030 kB ( 0%) ggc
web : 0.20 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall
2961 kB ( 0%) ggc
CSE 2 : 0.87 ( 1%) usr 0.01 ( 1%) sys 1.08 ( 2%) wall
1246 kB ( 0%) ggc
branch prediction : 0.12 ( 0%) usr 0.02 ( 1%) sys 0.14 ( 0%) wall
6859 kB ( 1%) ggc
combiner : 1.75 ( 3%) usr 0.03 ( 2%) sys 1.70 ( 3%) wall
39971 kB ( 3%) ggc
if-conversion : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
1398 kB ( 0%) ggc
regmove : 0.26 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall
0 kB ( 0%) ggc
integrated RA : 3.24 ( 5%) usr 0.01 ( 1%) sys 3.39 ( 5%) wall
24873 kB ( 2%) ggc
reload : 1.72 ( 3%) usr 0.00 ( 0%) sys 1.72 ( 3%) wall
8401 kB ( 1%) ggc
reload CSE regs : 1.93 ( 3%) usr 0.00 ( 0%) sys 1.75 ( 3%) wall
19943 kB ( 2%) ggc
load CSE after reload : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall
487 kB ( 0%) ggc
zee : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
31 kB ( 0%) ggc
thread pro- & epilogue: 0.06 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall
3614 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.07 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall
1907 kB ( 0%) ggc
rename registers : 0.47 ( 1%) usr 0.00 ( 0%) sys 0.49 ( 1%) wall
2169 kB ( 0%) ggc
hard reg cprop : 0.45 ( 1%) usr 0.00 ( 0%) sys 0.45 ( 1%) wall
22 kB ( 0%) ggc
scheduling 2 : 4.47 ( 7%) usr 0.01 ( 1%) sys 4.35 ( 6%) wall
1114 kB ( 0%) ggc
machine dep reorg : 0.35 ( 1%) usr 0.00 ( 0%) sys 0.39 ( 1%) wall
22 kB ( 0%) ggc
reorder blocks : 0.27 ( 0%) usr 0.00 ( 0%) sys 0.26 ( 0%) wall
3129 kB ( 0%) ggc
final : 0.82 ( 1%) usr 0.03 ( 2%) sys 0.83 ( 1%) wall
8473 kB ( 1%) ggc
symout : 0.33 ( 1%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall
53120 kB ( 5%) ggc
variable tracking : 1.34 ( 2%) usr 0.01 ( 1%) sys 1.42 ( 2%) wall
37182 kB ( 3%) ggc
var-tracking dataflow : 2.11 ( 3%) usr 0.00 ( 0%) sys 2.28 ( 3%) wall
0 kB ( 0%) ggc
var-tracking emit : 2.01 ( 3%) usr 0.00 ( 0%) sys 1.89 ( 3%) wall
18854 kB ( 2%) ggc
rest of compilation : 3.44 ( 5%) usr 0.33 (22%) sys 3.46 ( 5%) wall
8050 kB ( 1%) ggc
remove unused locals : 0.47 ( 1%) usr 0.01 ( 1%) sys 0.62 ( 1%) wall
0 kB ( 0%) ggc
address taken : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
0 kB ( 0%) ggc
unaccounted todo : 0.98 ( 2%) usr 0.08 ( 5%) sys 1.27 ( 2%) wall
8 kB ( 0%) ggc
repair loop structures: 0.07 ( 0%) usr 0.01 ( 1%) sys 0.07 ( 0%) wall
4127 kB ( 0%) ggc
TOTAL : 63.40 1.53 67.47
1152381 kB