This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] Miscompilation (SIGSEGV) with -ffast-math (!?), hugecompile time regression


Diego Novillo wrote:
On Mon, 2004-02-23 at 10:21, Diego Novillo wrote:


The compile time regression you experienced is probably not all because of the merge. We are spending a significant chunk of time in the tree optimizers.


I forgot to ask, could you compile with -ftime-report -fmem-report before and after the compile-time degradation you experienced?

Yes. For a -O2 compilation the following are the results (faster computer than previous report):


before (g++ (GCC) 3.5-tree-ssa 20040209 (merged 20040126)):
Execution times (seconds)
garbage collection : 8.91 ( 8%) usr 0.03 ( 1%) sys 8.94 ( 8%) wall
callgraph construction: 0.68 ( 1%) usr 0.00 ( 0%) sys 0.68 ( 1%) wall
callgraph optimization: 0.33 ( 0%) usr 0.01 ( 0%) sys 0.34 ( 0%) wall
cfg construction : 0.48 ( 0%) usr 0.02 ( 0%) sys 0.50 ( 0%) wall
cfg cleanup : 0.99 ( 1%) usr 0.00 ( 0%) sys 0.99 ( 1%) wall
trivially dead code : 0.69 ( 1%) usr 0.00 ( 0%) sys 0.70 ( 1%) wall
life analysis : 2.43 ( 2%) usr 0.00 ( 0%) sys 2.43 ( 2%) wall
life info update : 1.18 ( 1%) usr 0.00 ( 0%) sys 1.18 ( 1%) wall
alias analysis : 1.15 ( 1%) usr 0.00 ( 0%) sys 1.15 ( 1%) wall
register scan : 0.76 ( 1%) usr 0.00 ( 0%) sys 0.76 ( 1%) wall
rebuild jump labels : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall
preprocessing : 0.40 ( 0%) usr 0.20 ( 5%) sys 0.84 ( 1%) wall
parser : 10.81 (10%) usr 1.17 (29%) sys 11.96 (11%) wall
name lookup : 7.55 ( 7%) usr 1.65 (41%) sys 9.21 ( 8%) wall
integration : 11.28 (11%) usr 0.05 ( 1%) sys 11.33 (10%) wall
tree gimplify : 1.59 ( 1%) usr 0.02 ( 0%) sys 1.61 ( 1%) wall
tree eh : 1.14 ( 1%) usr 0.00 ( 0%) sys 1.14 ( 1%) wall
tree CFG construction : 0.56 ( 1%) usr 0.02 ( 0%) sys 0.58 ( 1%) wall
tree CFG cleanup : 1.07 ( 1%) usr 0.00 ( 0%) sys 1.07 ( 1%) wall
tree alias analysis : 0.38 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall
tree PHI insertion : 1.30 ( 1%) usr 0.00 ( 0%) sys 1.30 ( 1%) wall
tree SSA rewrite : 1.51 ( 1%) usr 0.01 ( 0%) sys 1.53 ( 1%) wall
tree SSA other : 2.55 ( 2%) usr 0.02 ( 0%) sys 2.56 ( 2%) wall
dominator optimization: 7.97 ( 7%) usr 0.17 ( 4%) sys 8.22 ( 7%) wall
tree SRA : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall
tree CCP : 1.64 ( 2%) usr 0.00 ( 0%) sys 1.64 ( 1%) wall
tree split crit edges : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
tree PRE : 3.62 ( 3%) usr 0.01 ( 0%) sys 3.63 ( 3%) wall
tree conservative DCE : 1.05 ( 1%) usr 0.02 ( 0%) sys 1.07 ( 1%) wall
tree aggressive DCE : 0.60 ( 1%) usr 0.00 ( 0%) sys 0.60 ( 1%) wall
tree SSA to normal : 1.21 ( 1%) usr 0.09 ( 2%) sys 1.30 ( 1%) wall
dominance frontiers : 0.18 ( 0%) usr 0.01 ( 0%) sys 0.19 ( 0%) wall
control dependences : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall
expand : 6.22 ( 6%) usr 0.03 ( 1%) sys 6.27 ( 6%) wall
varconst : 0.35 ( 0%) usr 0.03 ( 1%) sys 0.40 ( 0%) wall
jump : 0.45 ( 0%) usr 0.04 ( 1%) sys 0.49 ( 0%) wall
CSE : 3.86 ( 4%) usr 0.02 ( 0%) sys 3.91 ( 4%) wall
global CSE : 2.76 ( 3%) usr 0.05 ( 1%) sys 2.81 ( 3%) wall
loop analysis : 0.40 ( 0%) usr 0.02 ( 0%) sys 0.43 ( 0%) wall
bypass jumps : 0.76 ( 1%) usr 0.00 ( 0%) sys 0.76 ( 1%) wall
CSE 2 : 1.35 ( 1%) usr 0.00 ( 0%) sys 1.35 ( 1%) wall
branch prediction : 1.25 ( 1%) usr 0.02 ( 0%) sys 1.27 ( 1%) wall
flow analysis : 0.06 ( 0%) usr 0.01 ( 0%) sys 0.07 ( 0%) wall
combiner : 1.28 ( 1%) usr 0.01 ( 0%) sys 1.30 ( 1%) wall
if-conversion : 0.35 ( 0%) usr 0.00 ( 0%) sys 0.35 ( 0%) wall
regmove : 0.47 ( 0%) usr 0.00 ( 0%) sys 0.47 ( 0%) wall
local alloc : 1.18 ( 1%) usr 0.00 ( 0%) sys 1.18 ( 1%) wall
global alloc : 3.69 ( 3%) usr 0.03 ( 1%) sys 3.75 ( 3%) wall
reload CSE regs : 1.66 ( 2%) usr 0.00 ( 0%) sys 1.66 ( 1%) wall
flow 2 : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall
if-conversion 2 : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.16 ( 0%) wall
peephole 2 : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.29 ( 0%) wall
rename registers : 0.47 ( 0%) usr 0.04 ( 1%) sys 0.51 ( 0%) wall
scheduling 2 : 1.98 ( 2%) usr 0.05 ( 1%) sys 2.21 ( 2%) wall
reorder blocks : 0.28 ( 0%) usr 0.01 ( 0%) sys 0.29 ( 0%) wall
shorten branches : 0.37 ( 0%) usr 0.03 ( 1%) sys 0.50 ( 0%) wall
reg stack : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
final : 0.83 ( 1%) usr 0.07 ( 2%) sys 0.90 ( 1%) wall
symout : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
rest of compilation : 0.84 ( 1%) usr 0.03 ( 1%) sys 0.87 ( 1%) wall
TOTAL : 106.28 4.03 111.04




after (g++ (GCC) 3.5-tree-ssa 20040220 (merged 20040211)):
Execution times (seconds)
garbage collection : 9.18 ( 4%) usr 0.00 ( 0%) sys 9.50 ( 4%) wall
callgraph construction: 0.66 ( 0%) usr 0.00 ( 0%) sys 0.66 ( 0%) wall
callgraph optimization: 0.33 ( 0%) usr 0.01 ( 0%) sys 0.34 ( 0%) wall
cfg construction : 0.34 ( 0%) usr 0.00 ( 0%) sys 0.34 ( 0%) wall
cfg cleanup : 0.99 ( 0%) usr 0.00 ( 0%) sys 0.99 ( 0%) wall
trivially dead code : 0.77 ( 0%) usr 0.01 ( 0%) sys 0.78 ( 0%) wall
life analysis : 2.59 ( 1%) usr 0.01 ( 0%) sys 2.60 ( 1%) wall
life info update : 1.19 ( 1%) usr 0.00 ( 0%) sys 1.20 ( 0%) wall
alias analysis : 1.07 ( 0%) usr 0.00 ( 0%) sys 1.07 ( 0%) wall
register scan : 0.67 ( 0%) usr 0.00 ( 0%) sys 0.67 ( 0%) wall
rebuild jump labels : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
preprocessing : 0.32 ( 0%) usr 0.23 ( 5%) sys 1.29 ( 1%) wall
parser : 10.16 ( 4%) usr 1.12 (22%) sys 11.26 ( 5%) wall
name lookup : 4.14 ( 2%) usr 2.07 (41%) sys 6.22 ( 3%) wall
integration : 11.83 ( 5%) usr 0.04 ( 1%) sys 11.93 ( 5%) wall
tree gimplify : 1.61 ( 1%) usr 0.01 ( 0%) sys 1.63 ( 1%) wall
tree eh : 1.15 ( 0%) usr 0.01 ( 0%) sys 1.16 ( 0%) wall
tree CFG construction : 2.74 ( 1%) usr 0.01 ( 0%) sys 2.88 ( 1%) wall
tree CFG cleanup : 1.46 ( 1%) usr 0.01 ( 0%) sys 1.47 ( 1%) wall
tree PTA : 0.98 ( 0%) usr 0.00 ( 0%) sys 0.99 ( 0%) wall
tree alias analysis : 1.20 ( 1%) usr 0.00 ( 0%) sys 1.21 ( 1%) wall
tree PHI insertion : 1.46 ( 1%) usr 0.01 ( 0%) sys 1.47 ( 1%) wall
tree SSA rewrite : 19.89 ( 8%) usr 0.02 ( 0%) sys 20.03 ( 8%) wall
tree SSA other : 2.25 ( 1%) usr 0.36 ( 7%) sys 2.61 ( 1%) wall
tree operand scan : 2.51 ( 1%) usr 0.38 ( 7%) sys 2.92 ( 1%) wall
dominator optimization: 49.77 (21%) usr 0.20 ( 4%) sys 50.28 (21%) wall
tree SRA : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
tree CCP : 1.51 ( 1%) usr 0.00 ( 0%) sys 1.54 ( 1%) wall
tree split crit edges : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
tree PRE : 3.13 ( 1%) usr 0.05 ( 1%) sys 3.18 ( 1%) wall
tree linearize phis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
tree forward propagate: 0.69 ( 0%) usr 0.00 ( 0%) sys 0.70 ( 0%) wall
tree conservative DCE : 1.24 ( 1%) usr 0.01 ( 0%) sys 1.25 ( 1%) wall
tree aggressive DCE : 0.65 ( 0%) usr 0.00 ( 0%) sys 0.65 ( 0%) wall
tree DSE : 24.22 (10%) usr 0.01 ( 0%) sys 24.33 (10%) wall
tree copy headers : 0.82 ( 0%) usr 0.01 ( 0%) sys 0.84 ( 0%) wall
tree SSA to normal : 1.59 ( 1%) usr 0.02 ( 0%) sys 1.77 ( 1%) wall
dominance frontiers : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall
control dependences : 0.07 ( 0%) usr 0.01 ( 0%) sys 0.08 ( 0%) wall
expand : 45.89 (20%) usr 0.09 ( 2%) sys 46.31 (19%) wall
varconst : 0.28 ( 0%) usr 0.01 ( 0%) sys 0.31 ( 0%) wall
jump : 0.40 ( 0%) usr 0.03 ( 1%) sys 0.43 ( 0%) wall
CSE : 3.89 ( 2%) usr 0.01 ( 0%) sys 3.90 ( 2%) wall
global CSE : 2.81 ( 1%) usr 0.02 ( 0%) sys 2.83 ( 1%) wall
loop analysis : 0.31 ( 0%) usr 0.01 ( 0%) sys 0.32 ( 0%) wall
bypass jumps : 0.70 ( 0%) usr 0.00 ( 0%) sys 0.70 ( 0%) wall
CSE 2 : 1.47 ( 1%) usr 0.00 ( 0%) sys 1.48 ( 1%) wall
branch prediction : 1.10 ( 0%) usr 0.00 ( 0%) sys 1.10 ( 0%) wall
flow analysis : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
combiner : 1.41 ( 1%) usr 0.00 ( 0%) sys 1.41 ( 1%) wall
if-conversion : 0.41 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%) wall
regmove : 0.36 ( 0%) usr 0.01 ( 0%) sys 0.38 ( 0%) wall
mode switching : 0.02 ( 0%) usr 0.01 ( 0%) sys 0.03 ( 0%) wall
local alloc : 1.19 ( 1%) usr 0.02 ( 0%) sys 1.21 ( 1%) wall
global alloc : 2.81 ( 1%) usr 0.06 ( 1%) sys 2.88 ( 1%) wall
reload CSE regs : 1.52 ( 1%) usr 0.00 ( 0%) sys 1.52 ( 1%) wall
flow 2 : 0.28 ( 0%) usr 0.01 ( 0%) sys 0.30 ( 0%) wall
if-conversion 2 : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
peephole 2 : 0.38 ( 0%) usr 0.00 ( 0%) sys 0.39 ( 0%) wall
rename registers : 0.43 ( 0%) usr 0.01 ( 0%) sys 0.45 ( 0%) wall
scheduling 2 : 1.80 ( 1%) usr 0.01 ( 0%) sys 1.82 ( 1%) wall
reorder blocks : 0.27 ( 0%) usr 0.00 ( 0%) sys 0.27 ( 0%) wall
shorten branches : 0.27 ( 0%) usr 0.00 ( 0%) sys 0.27 ( 0%) wall
reg stack : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
final : 0.75 ( 0%) usr 0.09 ( 2%) sys 0.84 ( 0%) wall
symout : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
rest of compilation : 1.29 ( 1%) usr 0.02 ( 0%) sys 1.31 ( 1%) wall
TOTAL : 234.23 5.07 241.96



So DOM is to blame.


Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]