[Bug middle-end/38474] slow compilation at -O0 (callgraph optimization, inline heuristics, expand )

jv244 at cam dot ac dot uk gcc-bugzilla@gcc.gnu.org
Tue Dec 16 14:21:00 GMT 2008



------- Comment #24 from jv244 at cam dot ac dot uk  2008-12-16 14:20 -------
(In reply to comment #23)
reduced testcase timings at -O0 and -O3. Tree operand scan anybody?

> time gfortran -O0 -ffree-line-length-512 -c -ftime-report testcase_reduced.f90

Execution times (seconds)
 garbage collection    :   0.51 ( 1%) usr   0.00 ( 0%) sys   0.49 ( 1%) wall   
   0 kB ( 0%) ggc
 callgraph construction:   0.05 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
4956 kB ( 2%) ggc
 callgraph optimization:   8.13 (18%) usr   0.20 (16%) sys   8.36 (18%) wall   
1280 kB ( 1%) ggc
 cfg cleanup           :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 CFG verifier          :   0.48 ( 1%) usr   0.02 ( 2%) sys   0.46 ( 1%) wall   
   0 kB ( 0%) ggc
 trivially dead code   :   0.17 ( 0%) usr   0.00 ( 0%) sys   0.18 ( 0%) wall   
   0 kB ( 0%) ggc
 df live regs          :   0.11 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall   
   0 kB ( 0%) ggc
 df reg dead/unused notes:   0.24 ( 1%) usr   0.00 ( 0%) sys   0.23 ( 0%) wall 
  9445 kB ( 4%) ggc
 register information  :   0.11 ( 0%) usr   0.01 ( 1%) sys   0.12 ( 0%) wall   
   0 kB ( 0%) ggc
 alias analysis        :   0.10 ( 0%) usr   0.01 ( 1%) sys   0.10 ( 0%) wall   
4239 kB ( 2%) ggc
 rebuild jump labels   :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall   
   0 kB ( 0%) ggc
 parser                :   1.07 ( 2%) usr   0.05 ( 4%) sys   1.12 ( 2%) wall  
22673 kB ( 9%) ggc
 inline heuristics     :  16.30 (36%) usr   0.41 (33%) sys  16.75 (36%) wall   
   0 kB ( 0%) ggc
 tree gimplify         :   0.06 ( 0%) usr   0.01 ( 1%) sys   0.08 ( 0%) wall   
6435 kB ( 3%) ggc
 tree CFG construction :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
 180 kB ( 0%) ggc
 tree find ref. vars   :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
3231 kB ( 1%) ggc
 tree SSA rewrite      :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
  63 kB ( 0%) ggc
 tree SSA other        :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 tree operand scan     :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
 236 kB ( 0%) ggc
 tree SSA to normal    :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 tree SSA verifier     :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
   0 kB ( 0%) ggc
 tree STMT verifier    :   0.20 ( 0%) usr   0.01 ( 1%) sys   0.22 ( 0%) wall   
   0 kB ( 0%) ggc
 callgraph verifier    :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) wall   
   0 kB ( 0%) ggc
 dominance computation :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
   0 kB ( 0%) ggc
 expand                :  10.86 (24%) usr   0.38 (30%) sys  11.26 (24%) wall 
132856 kB (52%) ggc
 integrated RA         :   4.08 ( 9%) usr   0.05 ( 4%) sys   4.13 ( 9%) wall   
4604 kB ( 2%) ggc
 reload                :   1.88 ( 4%) usr   0.07 ( 6%) sys   1.97 ( 4%) wall  
59269 kB (23%) ggc
 thread pro- & epilogue:   0.17 ( 0%) usr   0.00 ( 0%) sys   0.18 ( 0%) wall   
 175 kB ( 0%) ggc
 final                 :   0.63 ( 1%) usr   0.03 ( 2%) sys   0.66 ( 1%) wall   
3790 kB ( 1%) ggc
 TOTAL                 :  45.42             1.25            46.73            
253684 kB
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --enable-checking=release to disable checks.

real    0m47.298s
user    0m45.923s
sys     0m1.316s

> time gfortran -march=native -O3 -ffree-line-length-512 -c -ftime-report testcase_reduced.f90

Execution times (seconds)
 garbage collection    :   1.48 ( 1%) usr   0.01 ( 0%) sys   1.50 ( 1%) wall   
   0 kB ( 0%) ggc
 callgraph construction:   0.03 ( 0%) usr   0.01 ( 0%) sys   0.05 ( 0%) wall   
4955 kB ( 1%) ggc
 callgraph optimization:   6.27 ( 3%) usr   0.15 ( 7%) sys   6.46 ( 4%) wall   
2366 kB ( 0%) ggc
 ipa cp                :   0.05 ( 0%) usr   0.01 ( 0%) sys   0.06 ( 0%) wall   
  34 kB ( 0%) ggc
 cfg cleanup           :   0.01 ( 0%) usr   0.01 ( 0%) sys   0.02 ( 0%) wall   
   0 kB ( 0%) ggc
 CFG verifier          :   1.41 ( 1%) usr   0.00 ( 0%) sys   1.33 ( 1%) wall   
   0 kB ( 0%) ggc
 trivially dead code   :   0.62 ( 0%) usr   0.00 ( 0%) sys   0.66 ( 0%) wall   
   0 kB ( 0%) ggc
 df reaching defs      :   0.69 ( 0%) usr   0.01 ( 0%) sys   0.67 ( 0%) wall   
   0 kB ( 0%) ggc
 df live regs          :   1.86 ( 1%) usr   0.00 ( 0%) sys   1.86 ( 1%) wall   
   0 kB ( 0%) ggc
 df live&initialized regs:   0.93 ( 1%) usr   0.00 ( 0%) sys   0.94 ( 1%) wall 
     0 kB ( 0%) ggc
 df use-def / def-use chains:   1.33 ( 1%) usr   0.04 ( 2%) sys   1.38 ( 1%)
wall       0 kB ( 0%) ggc
 df reg dead/unused notes:   0.92 ( 1%) usr   0.00 ( 0%) sys   0.96 ( 1%) wall 
 13469 kB ( 3%) ggc
 register information  :   0.44 ( 0%) usr   0.00 ( 0%) sys   0.43 ( 0%) wall   
   0 kB ( 0%) ggc
 alias analysis        :   1.05 ( 1%) usr   0.00 ( 0%) sys   1.05 ( 1%) wall  
24068 kB ( 5%) ggc
 register scan         :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.17 ( 0%) wall   
  18 kB ( 0%) ggc
 rebuild jump labels   :   0.31 ( 0%) usr   0.00 ( 0%) sys   0.30 ( 0%) wall   
   0 kB ( 0%) ggc
 parser                :   1.16 ( 1%) usr   0.03 ( 1%) sys   1.21 ( 1%) wall  
22673 kB ( 5%) ggc
 inline heuristics     :  15.83 ( 9%) usr   0.40 (20%) sys  16.25 ( 9%) wall   
 138 kB ( 0%) ggc
 integration           :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
 885 kB ( 0%) ggc
 tree gimplify         :   0.06 ( 0%) usr   0.01 ( 0%) sys   0.07 ( 0%) wall   
6434 kB ( 1%) ggc
 tree CFG construction :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
 179 kB ( 0%) ggc
 tree CFG cleanup      :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   8 kB ( 0%) ggc
 tree VRP              :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
 448 kB ( 0%) ggc
 tree copy propagation :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
 159 kB ( 0%) ggc
 tree find ref. vars   :   0.01 ( 0%) usr   0.01 ( 0%) sys   0.01 ( 0%) wall   
3229 kB ( 1%) ggc
 tree PTA              :   1.29 ( 1%) usr   0.03 ( 1%) sys   1.34 ( 1%) wall   
 540 kB ( 0%) ggc
 tree alias analysis   :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
  57 kB ( 0%) ggc
 tree call clobbering  :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
  19 kB ( 0%) ggc
 tree flow sensitive alias:   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall
     60 kB ( 0%) ggc
 tree flow insensitive alias:   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%)
wall       0 kB ( 0%) ggc
 tree memory partitioning:   0.09 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall 
     0 kB ( 0%) ggc
 tree SSA rewrite      :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
8391 kB ( 2%) ggc
 tree SSA other        :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 tree SSA incremental  :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
  21 kB ( 0%) ggc
 tree operand scan     :  98.14 (55%) usr   0.03 ( 1%) sys  98.31 (54%) wall   
4048 kB ( 1%) ggc
 dominator optimization:   0.03 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
  73 kB ( 0%) ggc
 tree CCP              :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
 119 kB ( 0%) ggc
 tree PRE              :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
  62 kB ( 0%) ggc
 tree FRE              :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
  33 kB ( 0%) ggc
 tree forward propagate:   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
   3 kB ( 0%) ggc
 tree conservative DCE :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
   0 kB ( 0%) ggc
 tree aggressive DCE   :   0.02 ( 0%) usr   0.01 ( 0%) sys   0.01 ( 0%) wall   
  12 kB ( 0%) ggc
 tree loop init        :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
  44 kB ( 0%) ggc
 tree SSA to normal    :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   4 kB ( 0%) ggc
 tree rename SSA copies:   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 tree SSA verifier     :   0.95 ( 1%) usr   0.00 ( 0%) sys   0.97 ( 1%) wall   
   0 kB ( 0%) ggc
 tree STMT verifier    :   2.05 ( 1%) usr   0.04 ( 2%) sys   2.11 ( 1%) wall   
   0 kB ( 0%) ggc
 callgraph verifier    :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.08 ( 0%) wall   
   0 kB ( 0%) ggc
 dominance computation :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
   0 kB ( 0%) ggc
 expand                :  12.80 ( 7%) usr   0.33 (16%) sys  13.09 ( 7%) wall 
131225 kB (27%) ggc
 lower subreg          :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
   0 kB ( 0%) ggc
 forward prop          :   0.91 ( 1%) usr   0.01 ( 0%) sys   0.91 ( 1%) wall   
9021 kB ( 2%) ggc
 CSE                   :   2.70 ( 2%) usr   0.01 ( 0%) sys   2.70 ( 1%) wall   
8941 kB ( 2%) ggc
 dead code elimination :   0.37 ( 0%) usr   0.00 ( 0%) sys   0.38 ( 0%) wall   
   0 kB ( 0%) ggc
 dead store elim1      :   0.59 ( 0%) usr   0.02 ( 1%) sys   0.62 ( 0%) wall  
13140 kB ( 3%) ggc
 dead store elim2      :   0.77 ( 0%) usr   0.00 ( 0%) sys   0.76 ( 0%) wall  
13219 kB ( 3%) ggc
 CSE 2                 :   2.04 ( 1%) usr   0.00 ( 0%) sys   2.04 ( 1%) wall   
3477 kB ( 1%) ggc
 combiner              :   0.77 ( 0%) usr   0.00 ( 0%) sys   0.79 ( 0%) wall   
6633 kB ( 1%) ggc
 if-conversion         :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
  50 kB ( 0%) ggc
 regmove               :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) wall   
  28 kB ( 0%) ggc
 integrated RA         :   9.17 ( 5%) usr   0.71 (35%) sys   9.92 ( 5%) wall  
25558 kB ( 5%) ggc
 reload                :   3.36 ( 2%) usr   0.10 ( 5%) sys   3.47 ( 2%) wall 
101799 kB (21%) ggc
 reload CSE regs       :   1.76 ( 1%) usr   0.00 ( 0%) sys   1.75 ( 1%) wall  
27970 kB ( 6%) ggc
 load CSE after reload :   0.09 ( 0%) usr   0.00 ( 0%) sys   0.09 ( 0%) wall   
   0 kB ( 0%) ggc
 thread pro- & epilogue:   0.18 ( 0%) usr   0.00 ( 0%) sys   0.19 ( 0%) wall   
 231 kB ( 0%) ggc
 peephole 2            :   0.16 ( 0%) usr   0.00 ( 0%) sys   0.15 ( 0%) wall   
  29 kB ( 0%) ggc
 rename registers      :   1.03 ( 1%) usr   0.00 ( 0%) sys   1.04 ( 1%) wall   
   0 kB ( 0%) ggc
 scheduling 2          :   3.82 ( 2%) usr   0.03 ( 1%) sys   3.82 ( 2%) wall  
53812 kB (11%) ggc
 machine dep reorg     :   0.41 ( 0%) usr   0.00 ( 0%) sys   0.41 ( 0%) wall   
   0 kB ( 0%) ggc
 reorder blocks        :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
   3 kB ( 0%) ggc
 final                 :   0.64 ( 0%) usr   0.02 ( 1%) sys   0.65 ( 0%) wall   
3824 kB ( 1%) ggc
 TOTAL                 : 179.47             2.03           181.70            
492168 kB
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --enable-checking=release to disable checks.

real    3m2.238s
user    2m59.927s
sys     0m2.128s


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38474



More information about the Gcc-bugs mailing list