------- Comment #49 from rguenth at gcc dot gnu dot org 2005-10-07 11:17 ------- So trying to get some updated comparison I noticed that the testcase fails to compile with 3.3.x and compared to 3.4.x we have improved a lot wrt -O2 compile-time:
3.4: 1m32s, peak at 230MB 4.1: 48s, peak at 480MB Still we are using too much memory. Time-report for 4.1 does no longer show obvious problems: Execution times (seconds) garbage collection : 0.50 ( 1%) usr 0.00 ( 0%) sys 0.50 ( 1%) wall 0 kB ( 0%) ggc callgraph construction: 0.17 ( 0%) usr 0.01 ( 0%) sys 0.19 ( 0%) wall 1898 kB ( 0%) ggc callgraph optimization: 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 422 kB ( 0%) ggc ipa reference : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 97 kB ( 0%) ggc ipa pure const : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc ipa type escape : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 0 kB ( 0%) ggc cfg construction : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 589 kB ( 0%) ggc cfg cleanup : 0.26 ( 1%) usr 0.00 ( 0%) sys 0.27 ( 1%) wall 511 kB ( 0%) ggc trivially dead code : 0.19 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall 0 kB ( 0%) ggc life analysis : 1.43 ( 3%) usr 0.00 ( 0%) sys 1.41 ( 3%) wall 91 kB ( 0%) ggc life info update : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 11 kB ( 0%) ggc alias analysis : 0.19 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall 3249 kB ( 1%) ggc register scan : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall 49 kB ( 0%) ggc rebuild jump labels : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 0 kB ( 0%) ggc preprocessing : 0.52 ( 1%) usr 0.29 (11%) sys 0.78 ( 1%) wall 732 kB ( 0%) ggc parser : 3.27 ( 7%) usr 0.42 (15%) sys 3.84 ( 7%) wall 121022 kB (21%) ggc name lookup : 0.65 ( 1%) usr 0.48 (18%) sys 1.15 ( 2%) wall 9424 kB ( 2%) ggc inline heuristics : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall 1163 kB ( 0%) ggc integration : 0.90 ( 2%) usr 0.02 ( 1%) sys 0.93 ( 2%) wall 46704 kB ( 8%) ggc tree gimplify : 0.41 ( 1%) usr 0.01 ( 0%) sys 0.47 ( 1%) wall 7205 kB ( 1%) ggc tree eh : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 1725 kB ( 0%) ggc tree CFG construction : 0.04 ( 0%) usr 0.03 ( 1%) sys 0.06 ( 0%) wall 5236 kB ( 1%) ggc tree CFG cleanup : 0.25 ( 1%) usr 0.02 ( 1%) sys 0.29 ( 1%) wall 332 kB ( 0%) ggc tree VRP : 0.37 ( 1%) usr 0.05 ( 2%) sys 0.44 ( 1%) wall 2375 kB ( 0%) ggc tree copy propagation : 1.22 ( 2%) usr 0.23 ( 8%) sys 1.43 ( 3%) wall 997 kB ( 0%) ggc tree store copy prop : 0.09 ( 0%) usr 0.06 ( 2%) sys 0.16 ( 0%) wall 202 kB ( 0%) ggc tree find ref. vars : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall 6215 kB ( 1%) ggc tree PTA : 1.80 ( 4%) usr 0.03 ( 1%) sys 1.88 ( 4%) wall 4061 kB ( 1%) ggc tree alias analysis : 3.18 ( 6%) usr 0.08 ( 3%) sys 3.40 ( 6%) wall 5523 kB ( 1%) ggc tree PHI insertion : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 459 kB ( 0%) ggc tree SSA rewrite : 1.80 ( 4%) usr 0.14 ( 5%) sys 2.00 ( 4%) wall 120115 kB (21%) ggc tree SSA other : 0.17 ( 0%) usr 0.03 ( 1%) sys 0.19 ( 0%) wall 0 kB ( 0%) ggc tree SSA incremental : 4.90 (10%) usr 0.05 ( 2%) sys 4.86 ( 9%) wall 5152 kB ( 1%) ggc tree operand scan : 3.98 ( 8%) usr 0.29 (11%) sys 4.21 ( 8%) wall 58117 kB (10%) ggc dominator optimization: 1.70 ( 3%) usr 0.04 ( 1%) sys 1.81 ( 3%) wall 100326 kB (17%) ggc tree SRA : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 17 kB ( 0%) ggc tree STORE-CCP : 0.15 ( 0%) usr 0.02 ( 1%) sys 0.11 ( 0%) wall 193 kB ( 0%) ggc tree CCP : 0.54 ( 1%) usr 0.03 ( 1%) sys 0.56 ( 1%) wall 923 kB ( 0%) ggc tree split crit edges : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 820 kB ( 0%) ggc tree reassociation : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc tree PRE : 0.34 ( 1%) usr 0.00 ( 0%) sys 0.30 ( 1%) wall 2854 kB ( 0%) ggc tree FRE : 0.32 ( 1%) usr 0.03 ( 1%) sys 0.33 ( 1%) wall 3726 kB ( 1%) ggc tree code sinking : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 78 kB ( 0%) ggc tree linearize phis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 63 kB ( 0%) ggc tree forward propagate: 0.19 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%) wall 1127 kB ( 0%) ggc tree conservative DCE : 0.49 ( 1%) usr 0.00 ( 0%) sys 0.52 ( 1%) wall 0 kB ( 0%) ggc tree aggressive DCE : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 0 kB ( 0%) ggc tree DSE : 0.28 ( 1%) usr 0.00 ( 0%) sys 0.29 ( 1%) wall 28 kB ( 0%) ggc tree loop bounds : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 47 kB ( 0%) ggc scev constant prop : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 18 kB ( 0%) ggc tree iv optimization : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 194 kB ( 0%) ggc tree loop init : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc tree copy headers : 0.01 ( 0%) usr 0.01 ( 0%) sys 0.00 ( 0%) wall 190 kB ( 0%) ggc tree SSA uncprop : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc tree SSA to normal : 0.18 ( 0%) usr 0.05 ( 2%) sys 0.29 ( 1%) wall 2239 kB ( 0%) ggc tree rename SSA copies: 0.14 ( 0%) usr 0.08 ( 3%) sys 0.18 ( 0%) wall 2 kB ( 0%) ggc control dependences : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc expand : 1.41 ( 3%) usr 0.05 ( 2%) sys 1.52 ( 3%) wall 27273 kB ( 5%) ggc varconst : 0.06 ( 0%) usr 0.05 ( 2%) sys 0.10 ( 0%) wall 488 kB ( 0%) ggc jump : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 959 kB ( 0%) ggc CSE : 5.51 (11%) usr 0.01 ( 0%) sys 5.39 (10%) wall 844 kB ( 0%) ggc loop analysis : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 776 kB ( 0%) ggc global CSE : 0.01 ( 0%) usr 0.01 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc CPROP 1 : 0.16 ( 0%) usr 0.01 ( 0%) sys 0.08 ( 0%) wall 1463 kB ( 0%) ggc PRE : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall 536 kB ( 0%) ggc CPROP 2 : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 191 kB ( 0%) ggc bypass jumps : 0.13 ( 0%) usr 0.01 ( 0%) sys 0.14 ( 0%) wall 195 kB ( 0%) ggc CSE 2 : 3.13 ( 6%) usr 0.00 ( 0%) sys 3.22 ( 6%) wall 423 kB ( 0%) ggc branch prediction : 0.19 ( 0%) usr 0.01 ( 0%) sys 0.13 ( 0%) wall 375 kB ( 0%) ggc flow analysis : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc combiner : 0.39 ( 1%) usr 0.00 ( 0%) sys 0.41 ( 1%) wall 1802 kB ( 0%) ggc if-conversion : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 36 kB ( 0%) ggc regmove : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall 82 kB ( 0%) ggc local alloc : 0.39 ( 1%) usr 0.01 ( 0%) sys 0.37 ( 1%) wall 778 kB ( 0%) ggc global alloc : 0.87 ( 2%) usr 0.00 ( 0%) sys 0.90 ( 2%) wall 2306 kB ( 0%) ggc reload CSE regs : 2.34 ( 5%) usr 0.00 ( 0%) sys 2.47 ( 5%) wall 2413 kB ( 0%) ggc flow 2 : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 706 kB ( 0%) ggc if-conversion 2 : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 0 kB ( 0%) ggc peephole 2 : 0.11 ( 0%) usr 0.01 ( 0%) sys 0.12 ( 0%) wall 1729 kB ( 0%) ggc rename registers : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall 13 kB ( 0%) ggc scheduling 2 : 1.33 ( 3%) usr 0.01 ( 0%) sys 1.35 ( 3%) wall 10690 kB ( 2%) ggc machine dep reorg : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.22 ( 0%) wall 13 kB ( 0%) ggc reorder blocks : 0.06 ( 0%) usr 0.01 ( 0%) sys 0.06 ( 0%) wall 522 kB ( 0%) ggc final : 0.35 ( 1%) usr 0.00 ( 0%) sys 0.41 ( 1%) wall 1457 kB ( 0%) ggc symout : 0.01 ( 0%) usr 0.01 ( 0%) sys 0.02 ( 0%) wall 173 kB ( 0%) ggc TOTAL : 49.18 2.74 52.57 573794 kB With gc memory use the worst offenders are tree SSA rewrite and DOM. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15855