This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Speed up constant propagation [patch]
- From: Richard Guenther <rguenth at tat dot physik dot uni-tuebingen dot de>
- To: Diego Novillo <dnovillo at redhat dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Gerald Pfeifer <pfeifer at dbai dot tuwien dot ac dot at>
- Date: Tue, 17 Jun 2003 11:08:31 +0200 (CEST)
- Subject: Re: [tree-ssa] Speed up constant propagation [patch]
On 16 Jun 2003, Diego Novillo wrote:
>
> This patch speeds up CCP times by not simulating statements that are
> either not interesting for constant propagation or statements that in a
> previous pass have been deemed VARYING.
> Richard, this patch sped up CCP in FieldCentering.cmpl.ii by a factor of
> 12, reducing compile time by about 22 secs. Could you try compiling the
> rest of POOMA to see whether this happens across the board? I've gotten
> POOMA's sources but I still haven't gotten around to
> configuring/compiling it.
The worst case test went down from 38 minutes to 4:15 (mainline is 3:23)!
Nice work! Time report follows (-fno-exceptions -O2 -march=athlon
-funroll-loops).
Richard.
Execution times (seconds)
garbage collection : 4.50 ( 2%) usr 0.20 ( 5%) sys 4.72 ( 2%)
wall
cfg construction : 0.51 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%)
wall
cfg cleanup : 0.85 ( 0%) usr 0.02 ( 0%) sys 0.86 ( 0%)
wall
trivially dead code : 1.32 ( 1%) usr 0.00 ( 0%) sys 1.37 ( 1%)
wall
life analysis : 1.87 ( 1%) usr 0.02 ( 0%) sys 1.88 ( 1%)
wall
life info update : 1.13 ( 0%) usr 0.00 ( 0%) sys 0.96 ( 0%)
wall
alias analysis : 3.73 ( 1%) usr 0.44 (10%) sys 4.40 ( 2%)
wall
register scan : 0.69 ( 0%) usr 0.00 ( 0%) sys 0.61 ( 0%)
wall
rebuild jump labels : 0.43 ( 0%) usr 0.00 ( 0%) sys 0.48 ( 0%)
wall
preprocessing : 0.50 ( 0%) usr 0.20 ( 5%) sys 0.88 ( 0%)
wall
parser : 7.77 ( 3%) usr 0.59 (14%) sys 8.72 ( 3%)
wall
name lookup : 6.49 ( 3%) usr 0.63 (15%) sys 6.73 ( 3%)
wall
integration : 6.12 ( 2%) usr 0.11 ( 3%) sys 6.53 ( 3%)
wall
tree gimplify : 1.46 ( 1%) usr 0.01 ( 0%) sys 1.37 ( 1%)
wall
tree CFG construction : 2.96 ( 1%) usr 0.10 ( 2%) sys 3.17 ( 1%)
wall
tree CFG cleanup : 0.44 ( 0%) usr 0.00 ( 0%) sys 0.48 ( 0%)
wall
tree alias analysis : 22.45 ( 9%) usr 0.11 ( 3%) sys 22.44 ( 9%)
wall
tree PHI insertion : 83.14 (33%) usr 0.39 ( 9%) sys 83.50 (33%)
wall
tree SSA rewrite : 8.73 ( 3%) usr 0.07 ( 2%) sys 8.93 ( 3%)
wall
tree SSA other : 2.77 ( 1%) usr 0.08 ( 2%) sys 2.87 ( 1%)
wall
tree SSA to normal : 12.39 ( 5%) usr 0.12 ( 3%) sys 12.44 ( 5%)
wall
tree CCP : 17.76 ( 7%) usr 0.13 ( 3%) sys 17.88 ( 7%)
wall
tree COPYPROP : 1.07 ( 0%) usr 0.00 ( 0%) sys 1.05 ( 0%)
wall
tree DCE : 4.41 ( 2%) usr 0.11 ( 3%) sys 4.57 ( 2%)
wall
dominance frontiers : 0.15 ( 0%) usr 0.01 ( 0%) sys 0.21 ( 0%)
wall
expand : 4.28 ( 2%) usr 0.16 ( 4%) sys 4.31 ( 2%)
wall
varconst : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%)
wall
jump : 1.24 ( 0%) usr 0.07 ( 2%) sys 1.34 ( 1%)
wall
CSE : 5.55 ( 2%) usr 0.01 ( 0%) sys 5.48 ( 2%)
wall
global CSE : 22.00 ( 9%) usr 0.06 ( 1%) sys 22.07 ( 9%)
wall
loop analysis : 8.73 ( 3%) usr 0.42 (10%) sys 9.22 ( 4%)
wall
bypass jumps : 0.68 ( 0%) usr 0.02 ( 0%) sys 0.73 ( 0%)
wall
CSE 2 : 1.82 ( 1%) usr 0.00 ( 0%) sys 1.66 ( 1%)
wall
branch prediction : 1.90 ( 1%) usr 0.00 ( 0%) sys 1.84 ( 1%)
wall
flow analysis : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%)
wall
combiner : 1.01 ( 0%) usr 0.00 ( 0%) sys 1.05 ( 0%)
wall
if-conversion : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%)
wall
regmove : 0.31 ( 0%) usr 0.00 ( 0%) sys 0.30 ( 0%)
wall
mode switching : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%)
wall
local alloc : 1.56 ( 1%) usr 0.08 ( 2%) sys 1.74 ( 1%)
wall
global alloc : 2.45 ( 1%) usr 0.02 ( 0%) sys 2.38 ( 1%)
wall
reload CSE regs : 0.89 ( 0%) usr 0.01 ( 0%) sys 0.92 ( 0%)
wall
flow 2 : 0.18 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%)
wall
if-conversion 2 : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%)
wall
peephole 2 : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%)
wall
rename registers : 0.59 ( 0%) usr 0.00 ( 0%) sys 0.48 ( 0%)
wall
scheduling 2 : 1.29 ( 1%) usr 0.07 ( 2%) sys 1.37 ( 1%)
wall
reorder blocks : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%)
wall
shorten branches : 0.30 ( 0%) usr 0.04 ( 1%) sys 0.37 ( 0%)
wall
reg stack : 0.17 ( 0%) usr 0.01 ( 0%) sys 0.16 ( 0%)
wall
final : 0.32 ( 0%) usr 0.02 ( 0%) sys 0.28 ( 0%)
wall
rest of compilation : 1.36 ( 1%) usr 0.00 ( 0%) sys 1.45 ( 1%)
wall
TOTAL : 250.71 4.34 255.26