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]

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


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