This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
patch that caused part of the compile-time regression in PR opt/8361
- From: Janis Johnson <janis187 at us dot ibm dot com>
- To: gcc at gcc dot gnu dot org, pfeifer at dbai dot tuwien dot ac dot at, bangerth at ticam dot utexas dot edu
- Date: Thu, 30 Jan 2003 22:10:28 -0800
- Subject: patch that caused part of the compile-time regression in PR opt/8361
I've been sick for a couple of weeks without much brainpower, but
enough to build compilers and run tests occasionally. I'm trying to
track down changes that increased compile times for generate.ii from
PR 8361. This particular test case occasionally causes ICEs and
sometimes gets compiler errors, so it's not a good candiate for a
binary search; also, I wanted to keep track of times for multiple
optimizations. There are some other jumps later that I'll continue to
look into, but the first big one is caused by this patch:
2002-04-27 Kurt Garloff <garloff@suse.de>
* tree-inline.c (inlinable_function_p): Improve heuristics
by using a smoother function to cut down allowable inlinable size.
* param.def: Add parameters max-inline-insns-single,
max-inline-slope, min-inline-insns that determine the exact
shape of the above function.
* param.h: Likewise.
Times, in seconds of user time, on i686-pc-linux-gnu for compilers
built from mainline sources from the specified dates (UTC) using
GCC 3.2, CFLAGS="-g -O2", checking disabled:
-O0 -O2 -O3
2002-04-27 18:30 26 65 68
2002-04-27 19:00 26 72 80
2002-05-27 26 71 78
2002-06-03 26 73 ICE
2002-06-17 30 76 ICE
2002-07-15 30 77 ICE
2002-08-12 error error error
2002-09-09 29 76 77
2002-10-07 error error error
2002-11-04 81 82
2002-12-02 81 82
Output of -ftime-report with -O3 before the patch:
Execution times (seconds)
garbage collection : 9.24 (13%) usr 0.03 ( 4%) sys 9.26 (13%) wall
cfg construction : 0.52 ( 1%) usr 0.02 ( 3%) sys 0.56 ( 1%) wall
cfg cleanup : 1.65 ( 2%) usr 0.00 ( 0%) sys 1.66 ( 2%) wall
trivially dead code : 1.51 ( 2%) usr 0.00 ( 0%) sys 1.54 ( 2%) wall
life analysis : 2.47 ( 4%) usr 0.02 ( 3%) sys 2.47 ( 4%) wall
life info update : 0.70 ( 1%) usr 0.00 ( 0%) sys 0.72 ( 1%) wall
preprocessing : 0.21 ( 0%) usr 0.03 ( 4%) sys 0.24 ( 0%) wall
lexical analysis : 0.55 ( 1%) usr 0.13 (18%) sys 0.67 ( 1%) wall
parser : 9.53 (14%) usr 0.24 (33%) sys 9.81 (14%) wall
expand : 9.01 (13%) usr 0.02 ( 3%) sys 9.11 (13%) wall
varconst : 0.40 ( 1%) usr 0.00 ( 0%) sys 0.39 ( 1%) wall
integration : 1.35 ( 2%) usr 0.01 ( 1%) sys 1.35 ( 2%) wall
jump : 0.78 ( 1%) usr 0.01 ( 1%) sys 0.80 ( 1%) wall
CSE : 11.52 (17%) usr 0.01 ( 1%) sys 11.48 (16%) wall
global CSE : 1.67 ( 2%) usr 0.00 ( 0%) sys 1.69 ( 2%) wall
loop analysis : 0.78 ( 1%) usr 0.01 ( 1%) sys 0.79 ( 1%) wall
CSE 2 : 3.93 ( 6%) usr 0.02 ( 3%) sys 3.98 ( 6%) wall
branch prediction : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall
flow analysis : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall
combiner : 1.51 ( 2%) usr 0.00 ( 0%) sys 1.51 ( 2%) wall
if-conversion : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
regmove : 0.43 ( 1%) usr 0.00 ( 0%) sys 0.44 ( 1%) wall
mode switching : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall
local alloc : 1.08 ( 2%) usr 0.01 ( 1%) sys 1.07 ( 2%) wall
global alloc : 2.26 ( 3%) usr 0.02 ( 3%) sys 2.28 ( 3%) wall
reload CSE regs : 1.73 ( 3%) usr 0.00 ( 0%) sys 1.74 ( 2%) wall
flow 2 : 0.35 ( 1%) usr 0.00 ( 0%) sys 0.35 ( 1%) wall
if-conversion 2 : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
peephole 2 : 0.25 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall
rename registers : 1.46 ( 2%) usr 0.03 ( 4%) sys 1.50 ( 2%) wall
scheduling 2 : 1.58 ( 2%) usr 0.06 ( 8%) sys 1.64 ( 2%) wall
reorder blocks : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
shorten branches : 0.24 ( 0%) usr 0.02 ( 3%) sys 0.23 ( 0%) wall
final : 0.43 ( 1%) usr 0.01 ( 1%) sys 0.45 ( 1%) wall
symout : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall
rest of compilation : 1.16 ( 2%) usr 0.01 ( 1%) sys 1.17 ( 2%) wall
TOTAL : 68.80 0.73 70.03
Output of -ftime-report with -O3 after the patch:
Execution times (seconds)
garbage collection : 10.32 (13%) usr 0.05 ( 6%) sys 10.38 (13%) wall
cfg construction : 0.63 ( 1%) usr 0.00 ( 0%) sys 0.64 ( 1%) wall
cfg cleanup : 2.93 ( 4%) usr 0.01 ( 1%) sys 2.91 ( 4%) wall
trivially dead code : 1.95 ( 2%) usr 0.01 ( 1%) sys 2.02 ( 2%) wall
life analysis : 2.82 ( 4%) usr 0.00 ( 0%) sys 2.85 ( 4%) wall
life info update : 0.89 ( 1%) usr 0.00 ( 0%) sys 0.89 ( 1%) wall
preprocessing : 0.21 ( 0%) usr 0.04 ( 5%) sys 0.22 ( 0%) wall
lexical analysis : 0.51 ( 1%) usr 0.10 (12%) sys 0.62 ( 1%) wall
parser : 9.49 (12%) usr 0.24 (30%) sys 9.75 (12%) wall
expand : 14.10 (18%) usr 0.02 ( 2%) sys 14.11 (17%) wall
varconst : 0.34 ( 0%) usr 0.02 ( 2%) sys 0.38 ( 0%) wall
integration : 1.60 ( 2%) usr 0.00 ( 0%) sys 1.62 ( 2%) wall
jump : 1.12 ( 1%) usr 0.05 ( 6%) sys 1.16 ( 1%) wall
CSE : 11.42 (14%) usr 0.02 ( 2%) sys 11.42 (14%) wall
global CSE : 2.47 ( 3%) usr 0.00 ( 0%) sys 2.44 ( 3%) wall
loop analysis : 1.03 ( 1%) usr 0.03 ( 4%) sys 1.05 ( 1%) wall
CSE 2 : 4.02 ( 5%) usr 0.01 ( 1%) sys 4.03 ( 5%) wall
branch prediction : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall
flow analysis : 0.23 ( 0%) usr 0.00 ( 0%) sys 0.24 ( 0%) wall
combiner : 1.62 ( 2%) usr 0.00 ( 0%) sys 1.61 ( 2%) wall
if-conversion : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall
regmove : 0.42 ( 1%) usr 0.00 ( 0%) sys 0.44 ( 1%) wall
mode switching : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall
local alloc : 1.36 ( 2%) usr 0.01 ( 1%) sys 1.39 ( 2%) wall
global alloc : 2.53 ( 3%) usr 0.03 ( 4%) sys 2.52 ( 3%) wall
reload CSE regs : 1.86 ( 2%) usr 0.00 ( 0%) sys 1.85 ( 2%) wall
flow 2 : 0.32 ( 0%) usr 0.01 ( 1%) sys 0.33 ( 0%) wall
if-conversion 2 : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall
peephole 2 : 0.28 ( 0%) usr 0.01 ( 1%) sys 0.28 ( 0%) wall
rename registers : 1.59 ( 2%) usr 0.01 ( 1%) sys 1.59 ( 2%) wall
scheduling 2 : 1.64 ( 2%) usr 0.08 (10%) sys 1.72 ( 2%) wall
reorder blocks : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall
shorten branches : 0.26 ( 0%) usr 0.03 ( 4%) sys 0.30 ( 0%) wall
final : 0.48 ( 1%) usr 0.03 ( 4%) sys 0.52 ( 1%) wall
symout : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall
rest of compilation : 1.35 ( 2%) usr 0.00 ( 0%) sys 1.35 ( 2%) wall
TOTAL : 80.30 0.81 81.11
I'm very prone to making stupid mistakes right now, so someone ought to
verify this.
Janis