This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/13776] [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120
- From: "dberlin at dberlin dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Mar 2004 15:38:40 -0000
- Subject: [Bug c++/13776] [tree-ssa] Many C++ compile-time regression in 3.5-tree-ssa 040120
- References: <20040120183908.13776.kgardas@objectsecurity.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From dberlin at dberlin dot org 2004-03-14 15:38 -------
Subject: Bug 13776
On Mar 14, 2004, at 8:35 AM, Richard Guenther wrote:
> Daniel Berlin wrote:
>> This adds a DOM pass in between split critical edges and PRE, and
>> works for me on i686 and powerpc
>> Tell me if it helps
>
> It made things worse in total, even PRE degraded some, but that may be
> in the noise.
>
> Richard.
I don't even get close to these numbers.
I've got your leafify patch installed (the one linked from the bug
report)
Even at -O2, on a checking enabled compiler, with tramp3d-v2 from the
bug report, with the following sizes:
[root@dberlin dberlin]# ls -trl tramp3d-v2.ii
-rw-r--r-- 1 root root 2962361 Feb 5 10:27 tramp3d-v2.ii
generated from
[root@dberlin dberlin]# ls -l tramp3d-v2.cpp
-rw-r--r-- 1 dberlin dberlin 1952077 Feb 5 10:14 tramp3d-v2.cpp
I get (without any changes to PRE):
[root@dberlin gcc]# ./cc1plus -O2 ~dberlin/tramp3d-v2.ii
...
Execution times (seconds)
garbage collection : 46.23 (15%) usr 0.27 ( 3%) sys 46.66 (15%)
wall
callgraph construction: 0.68 ( 0%) usr 0.01 ( 0%) sys 0.72 ( 0%)
wall
callgraph optimization: 0.80 ( 0%) usr 0.07 ( 1%) sys 0.92 ( 0%)
wall
cfg construction : 0.46 ( 0%) usr 0.04 ( 0%) sys 0.50 ( 0%)
wall
cfg cleanup : 1.82 ( 1%) usr 0.02 ( 0%) sys 1.84 ( 1%)
wall
CFG verifier : 8.07 ( 3%) usr 0.03 ( 0%) sys 8.15 ( 3%)
wall
trivially dead code : 1.28 ( 0%) usr 0.00 ( 0%) sys 1.29 ( 0%)
wall
life analysis : 2.96 ( 1%) usr 0.01 ( 0%) sys 2.97 ( 1%)
wall
life info update : 1.52 ( 0%) usr 0.01 ( 0%) sys 1.56 ( 0%)
wall
alias analysis : 2.64 ( 1%) usr 0.01 ( 0%) sys 2.66 ( 1%)
wall
register scan : 1.23 ( 0%) usr 0.02 ( 0%) sys 1.25 ( 0%)
wall
rebuild jump labels : 0.38 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%)
wall
preprocessing : 0.29 ( 0%) usr 0.17 ( 2%) sys 0.46 ( 0%)
wall
parser : 13.65 ( 4%) usr 1.27 (16%) sys 20.56 ( 6%)
wall
name lookup : 4.99 ( 2%) usr 2.00 (25%) sys 7.07 ( 2%)
wall
integration : 28.17 ( 9%) usr 0.19 ( 2%) sys 28.57 ( 9%)
wall
tree gimplify : 2.08 ( 1%) usr 0.05 ( 1%) sys 2.19 ( 1%)
wall
tree eh : 2.86 ( 1%) usr 0.08 ( 1%) sys 2.96 ( 1%)
wall
tree CFG construction : 1.60 ( 1%) usr 0.09 ( 1%) sys 1.71 ( 1%)
wall
tree CFG cleanup : 3.99 ( 1%) usr 0.04 ( 0%) sys 4.04 ( 1%)
wall
tree PTA : 0.47 ( 0%) usr 0.01 ( 0%) sys 0.49 ( 0%)
wall
tree alias analysis : 0.61 ( 0%) usr 0.00 ( 0%) sys 0.61 ( 0%)
wall
tree PHI insertion : 9.15 ( 3%) usr 0.07 ( 1%) sys 9.26 ( 3%)
wall
tree SSA rewrite : 3.30 ( 1%) usr 0.01 ( 0%) sys 3.32 ( 1%)
wall
tree SSA other : 3.63 ( 1%) usr 0.51 ( 6%) sys 4.20 ( 1%)
wall
tree operand scan : 3.62 ( 1%) usr 0.59 ( 7%) sys 4.22 ( 1%)
wall
dominator optimization: 15.57 ( 5%) usr 0.46 ( 6%) sys 16.09 ( 5%)
wall
tree SRA : 0.31 ( 0%) usr 0.01 ( 0%) sys 0.32 ( 0%)
wall
tree CCP : 1.56 ( 1%) usr 0.02 ( 0%) sys 1.58 ( 0%)
wall
tree split crit edges : 0.57 ( 0%) usr 0.03 ( 0%) sys 0.61 ( 0%)
wall
tree PRE : 34.92 ( 9%) usr 0.14 ( 2%) sys 35.20 ( 9%)
wall
tree linearize phis : 0.03 ( 0%) usr 0.02 ( 0%) sys 0.05 ( 0%)
wall
tree forward propagate: 1.12 ( 0%) usr 0.02 ( 0%) sys 1.14 ( 0%)
wall
tree conservative DCE : 3.02 ( 1%) usr 0.03 ( 0%) sys 3.06 ( 1%)
wall
tree aggressive DCE : 0.78 ( 0%) usr 0.01 ( 0%) sys 0.79 ( 0%)
wall
tree DSE : 2.18 ( 1%) usr 0.01 ( 0%) sys 2.20 ( 1%)
wall
tree copy headers : 2.15 ( 1%) usr 0.02 ( 0%) sys 2.19 ( 1%)
wall
tree SSA to normal : 2.42 ( 1%) usr 0.13 ( 2%) sys 2.61 ( 1%)
wall
tree NRV optimization : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%)
wall
tree rename SSA copies: 0.71 ( 0%) usr 0.04 ( 0%) sys 0.75 ( 0%)
wall
tree SSA verifier : 25.23 ( 8%) usr 0.23 ( 3%) sys 25.52 ( 8%)
wall
tree STMT verifier : 3.72 ( 1%) usr 0.03 ( 0%) sys 3.76 ( 1%)
wall
callgraph verifier : 7.79 ( 3%) usr 0.25 ( 3%) sys 8.09 ( 3%)
wall
dominance frontiers : 0.27 ( 0%) usr 0.00 ( 0%) sys 0.27 ( 0%)
wall
control dependences : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%)
wall
expand : 16.03 ( 5%) usr 0.19 ( 2%) sys 16.41 ( 5%)
wall
varconst : 0.66 ( 0%) usr 0.05 ( 1%) sys 1.06 ( 0%)
wall
jump : 1.17 ( 0%) usr 0.15 ( 2%) sys 1.41 ( 0%)
wall
CSE : 8.76 ( 3%) usr 0.05 ( 1%) sys 8.84 ( 3%)
wall
global CSE : 5.01 ( 2%) usr 0.13 ( 2%) sys 5.15 ( 2%)
wall
loop analysis : 1.21 ( 0%) usr 0.01 ( 0%) sys 1.24 ( 0%)
wall
bypass jumps : 0.94 ( 0%) usr 0.00 ( 0%) sys 0.94 ( 0%)
wall
CSE 2 : 3.59 ( 1%) usr 0.02 ( 0%) sys 3.78 ( 1%)
wall
branch prediction : 2.25 ( 1%) usr 0.01 ( 0%) sys 2.31 ( 1%)
wall
flow analysis : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%)
wall
combiner : 2.58 ( 1%) usr 0.03 ( 0%) sys 2.64 ( 1%)
wall
if-conversion : 0.57 ( 0%) usr 0.00 ( 0%) sys 0.57 ( 0%)
wall
regmove : 0.85 ( 0%) usr 0.00 ( 0%) sys 0.86 ( 0%)
wall
local alloc : 1.80 ( 1%) usr 0.01 ( 0%) sys 1.84 ( 1%)
wall
global alloc : 5.34 ( 2%) usr 0.10 ( 1%) sys 5.50 ( 2%)
wall
reload CSE regs : 2.24 ( 1%) usr 0.00 ( 0%) sys 2.25 ( 1%)
wall
flow 2 : 0.33 ( 0%) usr 0.00 ( 0%) sys 0.34 ( 0%)
wall
if-conversion 2 : 0.35 ( 0%) usr 0.00 ( 0%) sys 0.35 ( 0%)
wall
peephole 2 : 0.38 ( 0%) usr 0.00 ( 0%) sys 0.39 ( 0%)
wall
rename registers : 1.43 ( 0%) usr 0.04 ( 0%) sys 1.52 ( 0%)
wall
scheduling 2 : 2.28 ( 1%) usr 0.08 ( 1%) sys 2.38 ( 1%)
wall
reorder blocks : 0.49 ( 0%) usr 0.01 ( 0%) sys 0.50 ( 0%)
wall
shorten branches : 0.70 ( 0%) usr 0.01 ( 0%) sys 0.71 ( 0%)
wall
reg stack : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%)
wall
final : 1.03 ( 0%) usr 0.14 ( 2%) sys 1.38 ( 0%)
wall
symout : 0.02 ( 0%) usr 0.03 ( 0%) sys 0.06 ( 0%)
wall
rest of compilation : 1.48 ( 0%) usr 0.04 ( 0%) sys 1.54 ( 0%)
wall
TOTAL : 310.60 8.12 327.62
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --disable-checking to disable checks.
With my changes to PRE, i get the same numbers, except PRE is at 28
seconds instead of 36.
I certainly get *nowhere close* to 600 seconds in PRE, or the numbers
you get overall.
I can't fix a problem i can't reproduce, i can only take stabs at it.
Can someone else please verify his numbers so i know whether it's my
test setup or his?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13776