http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45422
--- Comment #30 from davidxl <xinliangli at gmail dot com> 2011-01-21 19:58:41 UTC --- (In reply to comment #29) > (In reply to comment #28) > > David, any progress with this? > > The cost function fix to make sure solution set does not become too big will > be > probably very involved and won't be availlable in 4.6 time frame. I will get a > workaround using Richard's suggestion -- terminate the iterating loop when > slow > convergence is detected and some limit is reached. > > David Two observations: 1) I can not reproduce the timing by Joost -- see below. Can someone else measure the time independently? 2) Limiting the iteration count of ivopt improvement loop does not help that much: from unlimited (can be ~40 in this case) to max iteration of 5 only cutdown total compile time by 2s. The following is the timing of the trunk compiler. Options: -O2 -ftime-report -cpp -fbounds-check -g -O3 -ffast-math -funroll-loops -ftree-vectorize -march=native -ffree-form parser : 0.67 ( 1%) usr 0.09 ( 6%) sys 0.77 ( 1%) wall 53556 kB ( 5%) ggc inline heuristics : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall 0 kB ( 0%) ggc tree gimplify : 0.35 ( 1%) usr 0.03 ( 2%) sys 0.38 ( 1%) wall 48426 kB ( 4%) ggc tree eh : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc tree CFG construction : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 11978 kB ( 1%) ggc tree CFG cleanup : 0.68 ( 1%) usr 0.02 ( 1%) sys 0.64 ( 1%) wall 2484 kB ( 0%) ggc tree VRP : 0.83 ( 1%) usr 0.02 ( 1%) sys 1.28 ( 2%) wall 64371 kB ( 6%) ggc tree copy propagation : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.16 ( 0%) wall 1267 kB ( 0%) ggc tree find ref. vars : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 3806 kB ( 0%) ggc tree PTA : 0.82 ( 1%) usr 0.00 ( 0%) sys 0.80 ( 1%) wall 5497 kB ( 0%) ggc tree PHI insertion : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 3194 kB ( 0%) ggc tree SSA rewrite : 0.23 ( 0%) usr 0.01 ( 1%) sys 0.21 ( 0%) wall 14021 kB ( 1%) ggc tree SSA other : 0.06 ( 0%) usr 0.01 ( 1%) sys 0.09 ( 0%) wall 435 kB ( 0%) ggc tree SSA incremental : 0.65 ( 1%) usr 0.02 ( 1%) sys 0.65 ( 1%) wall 6735 kB ( 1%) ggc tree operand scan : 0.37 ( 1%) usr 0.14 ( 9%) sys 0.53 ( 1%) wall 47156 kB ( 4%) ggc dominator optimization: 0.38 ( 1%) usr 0.02 ( 1%) sys 0.50 ( 1%) wall 6948 kB ( 1%) ggc tree SRA : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree CCP : 0.93 ( 1%) usr 0.01 ( 1%) sys 1.02 ( 2%) wall 4975 kB ( 0%) ggc tree PHI const/copy prop: 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 124 kB ( 0%) ggc tree split crit edges : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 1743 kB ( 0%) ggc tree reassociation : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall 5095 kB ( 0%) ggc tree PRE : 0.64 ( 1%) usr 0.00 ( 0%) sys 0.64 ( 1%) wall 9790 kB ( 1%) ggc tree FRE : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.31 ( 0%) wall 5410 kB ( 0%) ggc tree code sinking : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 956 kB ( 0%) ggc tree linearize phis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc tree forward propagate: 0.17 ( 0%) usr 0.00 ( 0%) sys 0.16 ( 0%) wall 11005 kB ( 1%) ggc tree phiprop : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree conservative DCE : 0.04 ( 0%) usr 0.02 ( 1%) sys 0.06 ( 0%) wall 944 kB ( 0%) ggc tree aggressive DCE : 0.31 ( 0%) usr 0.03 ( 2%) sys 0.40 ( 1%) wall 15336 kB ( 1%) ggc tree DSE : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 225 kB ( 0%) ggc tree loop bounds : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall 6744 kB ( 1%) ggc tree loop invariant motion: 0.05 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 485 kB ( 0%) ggc tree canonical iv : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 3128 kB ( 0%) ggc scev constant prop : 0.04 ( 0%) usr 0.01 ( 1%) sys 0.03 ( 0%) wall 1924 kB ( 0%) ggc complete unrolling : 0.79 ( 1%) usr 0.05 ( 3%) sys 0.85 ( 1%) wall 91364 kB ( 8%) ggc tree vectorization : 0.34 ( 1%) usr 0.00 ( 0%) sys 0.37 ( 1%) wall 25117 kB ( 2%) ggc tree slp vectorization: 0.41 ( 1%) usr 0.00 ( 0%) sys 0.35 ( 1%) wall 19256 kB ( 2%) ggc tree loop distribution: 0.04 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 850 kB ( 0%) ggc tree iv optimization : 11.14 (18%) usr 0.33 (22%) sys 12.24 (18%) wall 141300 kB (12%) ggc predictive commoning : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall 2696 kB ( 0%) ggc tree loop init : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 1220 kB ( 0%) ggc tree loop fini : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree copy headers : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 1652 kB ( 0%) ggc tree SSA uncprop : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree rename SSA copies: 0.03 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 0 kB ( 0%) ggc dominance frontiers : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc dominance computation : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.32 ( 0%) wall 0 kB ( 0%) ggc control dependences : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc out of ssa : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall 130 kB ( 0%) ggc expand vars : 0.09 ( 0%) usr 0.01 ( 1%) sys 0.10 ( 0%) wall 9013 kB ( 1%) ggc expand : 0.40 ( 1%) usr 0.01 ( 1%) sys 0.52 ( 1%) wall 57975 kB ( 5%) ggc post expand cleanups : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 3355 kB ( 0%) ggc lower subreg : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 0 kB ( 0%) ggc forward prop : 0.33 ( 1%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall 11129 kB ( 1%) ggc CSE : 0.97 ( 2%) usr 0.01 ( 1%) sys 0.99 ( 1%) wall 207 kB ( 0%) ggc dead code elimination : 0.26 ( 0%) usr 0.00 ( 0%) sys 0.32 ( 0%) wall 0 kB ( 0%) ggc dead store elim1 : 0.49 ( 1%) usr 0.00 ( 0%) sys 0.45 ( 1%) wall 11519 kB ( 1%) ggc dead store elim2 : 0.41 ( 1%) usr 0.00 ( 0%) sys 0.46 ( 1%) wall 13060 kB ( 1%) ggc loop analysis : 0.03 ( 0%) usr 0.01 ( 1%) sys 0.02 ( 0%) wall 1626 kB ( 0%) ggc loop invariant motion : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall 505 kB ( 0%) ggc loop unswitching : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 0 kB ( 0%) ggc loop unrolling : 1.59 ( 3%) usr 0.02 ( 1%) sys 1.64 ( 2%) wall 102158 kB ( 9%) ggc CPROP : 0.69 ( 1%) usr 0.02 ( 1%) sys 0.77 ( 1%) wall 13208 kB ( 1%) ggc PRE : 0.58 ( 1%) usr 0.00 ( 0%) sys 0.58 ( 1%) wall 1030 kB ( 0%) ggc web : 0.20 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 2961 kB ( 0%) ggc CSE 2 : 0.87 ( 1%) usr 0.01 ( 1%) sys 1.08 ( 2%) wall 1246 kB ( 0%) ggc branch prediction : 0.12 ( 0%) usr 0.02 ( 1%) sys 0.14 ( 0%) wall 6859 kB ( 1%) ggc combiner : 1.75 ( 3%) usr 0.03 ( 2%) sys 1.70 ( 3%) wall 39971 kB ( 3%) ggc if-conversion : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 1398 kB ( 0%) ggc regmove : 0.26 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall 0 kB ( 0%) ggc integrated RA : 3.24 ( 5%) usr 0.01 ( 1%) sys 3.39 ( 5%) wall 24873 kB ( 2%) ggc reload : 1.72 ( 3%) usr 0.00 ( 0%) sys 1.72 ( 3%) wall 8401 kB ( 1%) ggc reload CSE regs : 1.93 ( 3%) usr 0.00 ( 0%) sys 1.75 ( 3%) wall 19943 kB ( 2%) ggc load CSE after reload : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall 487 kB ( 0%) ggc zee : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 31 kB ( 0%) ggc thread pro- & epilogue: 0.06 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 3614 kB ( 0%) ggc combine stack adjustments: 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc peephole 2 : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 1907 kB ( 0%) ggc rename registers : 0.47 ( 1%) usr 0.00 ( 0%) sys 0.49 ( 1%) wall 2169 kB ( 0%) ggc hard reg cprop : 0.45 ( 1%) usr 0.00 ( 0%) sys 0.45 ( 1%) wall 22 kB ( 0%) ggc scheduling 2 : 4.47 ( 7%) usr 0.01 ( 1%) sys 4.35 ( 6%) wall 1114 kB ( 0%) ggc machine dep reorg : 0.35 ( 1%) usr 0.00 ( 0%) sys 0.39 ( 1%) wall 22 kB ( 0%) ggc reorder blocks : 0.27 ( 0%) usr 0.00 ( 0%) sys 0.26 ( 0%) wall 3129 kB ( 0%) ggc final : 0.82 ( 1%) usr 0.03 ( 2%) sys 0.83 ( 1%) wall 8473 kB ( 1%) ggc symout : 0.33 ( 1%) usr 0.00 ( 0%) sys 0.33 ( 0%) wall 53120 kB ( 5%) ggc variable tracking : 1.34 ( 2%) usr 0.01 ( 1%) sys 1.42 ( 2%) wall 37182 kB ( 3%) ggc var-tracking dataflow : 2.11 ( 3%) usr 0.00 ( 0%) sys 2.28 ( 3%) wall 0 kB ( 0%) ggc var-tracking emit : 2.01 ( 3%) usr 0.00 ( 0%) sys 1.89 ( 3%) wall 18854 kB ( 2%) ggc rest of compilation : 3.44 ( 5%) usr 0.33 (22%) sys 3.46 ( 5%) wall 8050 kB ( 1%) ggc remove unused locals : 0.47 ( 1%) usr 0.01 ( 1%) sys 0.62 ( 1%) wall 0 kB ( 0%) ggc address taken : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc unaccounted todo : 0.98 ( 2%) usr 0.08 ( 5%) sys 1.27 ( 2%) wall 8 kB ( 0%) ggc repair loop structures: 0.07 ( 0%) usr 0.01 ( 1%) sys 0.07 ( 0%) wall 4127 kB ( 0%) ggc TOTAL : 63.40 1.53 67.47 1152381 kB