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]

Extreme PRE compile times


Compiling g++.dg/eh/cleanup1.C without PRE we get:

Execution times (seconds)
 garbage collection    :   1.56 ( 1%) usr   0.02 ( 2%) sys   1.56 ( 1%) wall
 callgraph construction:   0.12 ( 0%) usr   0.02 ( 2%) sys   0.14 ( 0%) wall
 cfg construction      :   0.55 ( 0%) usr   0.00 ( 0%) sys   0.52 ( 0%) wall
 cfg cleanup           :   0.64 ( 1%) usr   0.00 ( 0%) sys   0.64 ( 1%) wall
 trivially dead code   :   0.30 ( 0%) usr   0.00 ( 0%) sys   0.31 ( 0%) wall
 life analysis         :   3.36 ( 3%) usr   0.01 ( 1%) sys   3.36 ( 3%) wall
 life info update      :   2.65 ( 2%) usr   0.00 ( 0%) sys   2.62 ( 2%) wall
 alias analysis        :   0.53 ( 0%) usr   0.00 ( 0%) sys   0.53 ( 0%) wall
 register scan         :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.22 ( 0%) wall
 rebuild jump labels   :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall
 preprocessing         :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall
 parser                :   1.97 ( 2%) usr   0.06 ( 6%) sys   2.00 ( 2%) wall
 name lookup           :   0.01 ( 0%) usr   0.02 ( 2%) sys   0.04 ( 0%) wall
 integration           :   2.04 ( 2%) usr   0.03 ( 3%) sys   2.08 ( 2%) wall
 tree gimplify         :   0.32 ( 0%) usr   0.00 ( 0%) sys   0.33 ( 0%) wall
 tree eh               :   0.14 ( 0%) usr   0.01 ( 1%) sys   0.16 ( 0%) wall
 tree CFG construction :   0.61 ( 1%) usr   0.03 ( 3%) sys   0.66 ( 1%) wall
 tree CFG cleanup      :   0.66 ( 1%) usr   0.00 ( 0%) sys   0.69 ( 1%) wall
 tree must-alias       :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall
 tree PHI insertion    :  12.46 (11%) usr   0.01 ( 1%) sys  12.47 (11%) wall
 tree SSA rewrite      :   0.09 ( 0%) usr   0.01 ( 1%) sys   0.11 ( 0%) wall
 tree SSA other        :   0.24 ( 0%) usr   0.02 ( 2%) sys   0.26 ( 0%) wall
 tree thread jumps     :   0.25 ( 0%) usr   0.03 ( 3%) sys   0.27 ( 0%) wall
 dominator optimization:   0.58 ( 1%) usr   0.03 ( 3%) sys   0.61 ( 1%) wall
 tree CCP              :   0.22 ( 0%) usr   0.01 ( 1%) sys   0.22 ( 0%) wall
 tree COPYPROP         :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall
 tree DCE              :   0.20 ( 0%) usr   0.01 ( 1%) sys   0.20 ( 0%) wall
 tree SSA to normal    :   0.26 ( 0%) usr   0.01 ( 1%) sys   0.28 ( 0%) wall
 dominance frontiers   :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall
 expand                :   0.55 ( 0%) usr   0.03 ( 3%) sys   0.53 ( 0%) wall
 jump                  :   2.81 ( 3%) usr   0.02 ( 2%) sys   2.88 ( 3%) wall
 CSE                   :   1.15 ( 1%) usr   0.00 ( 0%) sys   1.19 ( 1%) wall
 global CSE            :   4.24 ( 4%) usr   0.41 (42%) sys   4.63 ( 4%) wall
 loop analysis         :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall
 bypass jumps          :   0.63 ( 1%) usr   0.06 ( 6%) sys   0.69 ( 1%) wall
 CSE 2                 :   0.34 ( 0%) usr   0.00 ( 0%) sys   0.35 ( 0%) wall
 branch prediction     :   1.72 ( 2%) usr   0.00 ( 0%) sys   1.72 ( 2%) wall
 flow analysis         :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.08 ( 0%) wall
 combiner              :   9.35 ( 8%) usr   0.00 ( 0%) sys   9.35 ( 8%) wall
 if-conversion         :   3.03 ( 3%) usr   0.01 ( 1%) sys   3.03 ( 3%) wall
 regmove               :   0.16 ( 0%) usr   0.00 ( 0%) sys   0.17 ( 0%) wall
 mode switching        :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall
 local alloc           :   0.36 ( 0%) usr   0.01 ( 1%) sys   0.37 ( 0%) wall
 global alloc          :  17.18 (15%) usr   0.01 ( 1%) sys  17.18 (15%) wall
 reload CSE regs       :   1.95 ( 2%) usr   0.01 ( 1%) sys   1.96 ( 2%) wall
 flow 2                :   0.29 ( 0%) usr   0.00 ( 0%) sys   0.29 ( 0%) wall
 if-conversion 2       :   1.24 ( 1%) usr   0.00 ( 0%) sys   1.23 ( 1%) wall
 peephole 2            :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall
 rename registers      :   3.73 ( 3%) usr   0.04 ( 4%) sys   3.77 ( 3%) wall
 scheduling 2          :  31.25 (28%) usr   0.00 ( 0%) sys  31.27 (28%) wall
 reorder blocks        :   0.18 ( 0%) usr   0.00 ( 0%) sys   0.17 ( 0%) wall
 shorten branches      :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.12 ( 0%) wall
 final                 :   0.20 ( 0%) usr   0.04 ( 4%) sys   0.24 ( 0%) wall
 rest of compilation   :   0.72 ( 1%) usr   0.01 ( 1%) sys   0.70 ( 1%) wall
 TOTAL                 : 111.58             0.98           112.56


If I turn on tree-pre, then it looks like this:

Execution times (seconds)
 garbage collection    : 269.10 (29%) usr   0.18 ( 5%) sys 268.95 (28%) wall
 callgraph construction:   0.14 ( 0%) usr   0.00 ( 0%) sys   0.15 ( 0%) wall
 cfg construction      :   0.55 ( 0%) usr   0.00 ( 0%) sys   0.54 ( 0%) wall
 cfg cleanup           :   0.62 ( 0%) usr   0.00 ( 0%) sys   0.65 ( 0%) wall
 trivially dead code   :   0.31 ( 0%) usr   0.00 ( 0%) sys   0.33 ( 0%) wall
 life analysis         :   3.36 ( 0%) usr   0.00 ( 0%) sys   3.35 ( 0%) wall
 life info update      :   2.65 ( 0%) usr   0.00 ( 0%) sys   2.63 ( 0%) wall
 alias analysis        :   0.50 ( 0%) usr   0.00 ( 0%) sys   0.50 ( 0%) wall
 register scan         :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall
 rebuild jump labels   :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall
 preprocessing         :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall
 parser                :   1.98 ( 0%) usr   0.06 ( 2%) sys   2.05 ( 0%) wall
 name lookup           :   0.07 ( 0%) usr   0.01 ( 0%) sys   0.05 ( 0%) wall
 integration           :   2.17 ( 0%) usr   0.01 ( 0%) sys   2.18 ( 0%) wall
 tree gimplify         :   0.33 ( 0%) usr   0.00 ( 0%) sys   0.34 ( 0%) wall
 tree eh               :   0.15 ( 0%) usr   0.01 ( 0%) sys   0.15 ( 0%) wall
 tree CFG construction :   0.61 ( 0%) usr   0.00 ( 0%) sys   0.61 ( 0%) wall
 tree CFG cleanup      :   0.65 ( 0%) usr   0.00 ( 0%) sys   0.67 ( 0%) wall
 tree must-alias       :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall
 tree PHI insertion    :  12.48 ( 1%) usr   0.02 ( 1%) sys  12.51 ( 1%) wall
 tree SSA rewrite      :   0.10 ( 0%) usr   0.01 ( 0%) sys   0.11 ( 0%) wall
 tree SSA other        :   0.24 ( 0%) usr   0.03 ( 1%) sys   0.26 ( 0%) wall
 tree thread jumps     :   0.27 ( 0%) usr   0.02 ( 1%) sys   0.28 ( 0%) wall
 dominator optimization:   0.92 ( 0%) usr   0.33 ( 9%) sys   1.25 ( 0%) wall
 tree CCP              :   0.23 ( 0%) usr   0.00 ( 0%) sys   0.22 ( 0%) wall
 tree PRE              : 562.07 (60%) usr   0.93 (25%) sys 576.33 (60%) wall
 tree COPYPROP         :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall
 tree DCE              :   0.21 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall
 tree SSA to normal    :   1.14 ( 0%) usr   1.59 (42%) sys   3.17 ( 0%) wall
 dominance frontiers   :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall
 expand                :   0.50 ( 0%) usr   0.05 ( 1%) sys   0.60 ( 0%) wall
 varconst              :   0.00 ( 0%) usr   0.01 ( 0%) sys   0.00 ( 0%) wall
 jump                  :   2.71 ( 0%) usr   0.02 ( 1%) sys   2.72 ( 0%) wall
 CSE                   :   1.28 ( 0%) usr   0.00 ( 0%) sys   1.31 ( 0%) wall
 global CSE            :   4.17 ( 0%) usr   0.39 (10%) sys   4.55 ( 0%) wall
 loop analysis         :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall
 bypass jumps          :   0.61 ( 0%) usr   0.07 ( 2%) sys   0.68 ( 0%) wall
 CSE 2                 :   0.38 ( 0%) usr   0.00 ( 0%) sys   0.37 ( 0%) wall
 branch prediction     :   1.76 ( 0%) usr   0.00 ( 0%) sys   1.74 ( 0%) wall
 flow analysis         :   0.07 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall
 combiner              :   9.36 ( 1%) usr   0.00 ( 0%) sys   9.36 ( 1%) wall
 if-conversion         :   3.28 ( 0%) usr   0.00 ( 0%) sys   3.29 ( 0%) wall
 regmove               :   0.17 ( 0%) usr   0.00 ( 0%) sys   0.17 ( 0%) wall
 mode switching        :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall
 local alloc           :   0.36 ( 0%) usr   0.00 ( 0%) sys   0.37 ( 0%) wall
 global alloc          :  16.83 ( 2%) usr   0.00 ( 0%) sys  16.83 ( 2%) wall
 reload CSE regs       :   2.04 ( 0%) usr   0.01 ( 0%) sys   2.04 ( 0%) wall
 flow 2                :   0.27 ( 0%) usr   0.00 ( 0%) sys   0.29 ( 0%) wall
 if-conversion 2       :   1.15 ( 0%) usr   0.00 ( 0%) sys   1.16 ( 0%) wall
 peephole 2            :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.10 ( 0%) wall
 rename registers      :   3.74 ( 0%) usr   0.02 ( 1%) sys   3.76 ( 0%) wall
 scheduling 2          :  31.91 ( 3%) usr   0.00 ( 0%) sys  31.90 ( 3%) wall
 reorder blocks        :   0.17 ( 0%) usr   0.00 ( 0%) sys   0.18 ( 0%) wall
 shorten branches      :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall
 final                 :   0.23 ( 0%) usr   0.01 ( 0%) sys   0.25 ( 0%) wall
 rest of compilation   :   0.69 ( 0%) usr   0.00 ( 0%) sys   0.71 ( 0%) wall
 TOTAL                 : 943.25             3.79           960.50


Clearly PRE is still doing something that's not terribly intelligent given
that PRE + the increase the GC time accounts for 90% of the total
compilation time for this file.

jeff








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