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

--- Comment #5 from Thomas Koenig <tkoenig at gcc dot gnu.org> 2010-11-21 
19:39:23 UTC ---
With -fno-ivopts, the alias statement walking is the clear culprit
(a somewhat shorter test case):

i...@linux-fd1f:~/Krempel/Dep-c> time
~/libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/f951 -ftime-report -O2 -fno-ivopts
gener-4.f90                                                                     
 MAIN__ main                                                                    
Analyzing compilation unit                                                      
 {GC 44026k -> 25146k}Performing interprocedural optimizations                  
 <*free_lang_data> <visibility> <early_local_cleanups> {GC 37683k -> 36011k}
<whole-program> <ipa-profile> <cp> <inline> <pure-const> <static-var>Assembling
functions:                                   
 MAIN__ {GC 54739k -> 37948k} {GC 61997k -> 51931k} {GC 77889k -> 51575k} {GC
103199k -> 77477k} {GC 100723k -> 74180k} {GC 98147k -> 73521k} main            
Execution times (seconds)                                                       
 garbage collection    :   0.79 ( 0%) usr   0.00 ( 0%) sys   0.81 ( 0%) wall   
   0 kB ( 0%) ggc    
 callgraph construction:   0.06 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) wall   
2465 kB ( 1%) ggc    
 callgraph optimization:   0.02 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
   2 kB ( 0%) ggc    
 ipa cp                :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
 256 kB ( 0%) ggc    
 ipa profile           :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc    
 ipa pure const        :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
   0 kB ( 0%) ggc    
 cfg construction      :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc    
 cfg cleanup           :   0.19 ( 0%) usr   0.00 ( 0%) sys   0.16 ( 0%) wall   
 344 kB ( 0%) ggc    
 CFG verifier          :   1.40 ( 0%) usr   0.01 ( 0%) sys   1.35 ( 0%) wall   
   0 kB ( 0%) ggc    
 trivially dead code   :   0.20 ( 0%) usr   0.00 ( 0%) sys   0.20 ( 0%) wall   
   0 kB ( 0%) ggc    
 df scan insns         :   0.20 ( 0%) usr   0.01 ( 0%) sys   0.21 ( 0%) wall   
   0 kB ( 0%) ggc    
 df multiple defs      :   0.07 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall   
   0 kB ( 0%) ggc    
 df reaching defs      :   2.12 ( 1%) usr   0.01 ( 0%) sys   2.15 ( 1%) wall   
   0 kB ( 0%) ggc    
 df live regs          :   0.93 ( 0%) usr   0.00 ( 0%) sys   1.00 ( 0%) wall   
   0 kB ( 0%) ggc    
 df live&initialized regs:   0.26 ( 0%) usr   0.00 ( 0%) sys   0.23 ( 0%) wall 
     0 kB ( 0%) ggc  
 df use-def / def-use chains:   0.11 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%)
wall       0 kB ( 0%) ggc                                                       
 df reg dead/unused notes:   0.44 ( 0%) usr   0.00 ( 0%) sys   0.45 ( 0%) wall 
  2460 kB ( 1%) ggc  
 register information  :   0.11 ( 0%) usr   0.00 ( 0%) sys   0.10 ( 0%) wall   
   0 kB ( 0%) ggc    
 alias analysis        :   0.30 ( 0%) usr   0.00 ( 0%) sys   0.31 ( 0%) wall   
2816 kB ( 1%) ggc    
 alias stmt walking    : 205.44 (72%) usr   1.33 (58%) sys 207.39 (72%) wall   
7023 kB ( 3%) ggc    
 register scan         :   0.06 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
   0 kB ( 0%) ggc    
 rebuild jump labels   :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.13 ( 0%) wall   
   0 kB ( 0%) ggc    
 parser                :   0.44 ( 0%) usr   0.03 ( 1%) sys   0.47 ( 0%) wall  
20481 kB ( 8%) ggc    
 inline heuristics     :   0.09 ( 0%) usr   0.00 ( 0%) sys   0.09 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree gimplify         :   0.16 ( 0%) usr   0.01 ( 0%) sys   0.18 ( 0%) wall  
17257 kB ( 6%) ggc    
 tree eh               :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree CFG construction :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) wall   
5915 kB ( 2%) ggc    
 tree CFG cleanup      :   1.08 ( 0%) usr   0.02 ( 1%) sys   1.15 ( 0%) wall   
 602 kB ( 0%) ggc    
 tree VRP              :   0.44 ( 0%) usr   0.00 ( 0%) sys   0.45 ( 0%) wall   
4778 kB ( 2%) ggc    
 tree copy propagation :   0.23 ( 0%) usr   0.01 ( 0%) sys   0.25 ( 0%) wall   
  75 kB ( 0%) ggc    
 tree find ref. vars   :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
 865 kB ( 0%) ggc    
 tree PTA              :   2.31 ( 1%) usr   0.06 ( 3%) sys   2.38 ( 1%) wall   
2253 kB ( 1%) ggc    
 tree PHI insertion    :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
2203 kB ( 1%) ggc    
 tree SSA rewrite      :   3.08 ( 1%) usr   0.01 ( 0%) sys   5.10 ( 2%) wall   
6503 kB ( 2%) ggc    
 tree SSA other        :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
  32 kB ( 0%) ggc    
 tree SSA incremental  :   6.20 ( 2%) usr   0.03 ( 1%) sys   7.43 ( 3%) wall   
1372 kB ( 1%) ggc    
 tree operand scan     :   0.13 ( 0%) usr   0.10 ( 4%) sys   0.19 ( 0%) wall  
13430 kB ( 5%) ggc    
 dominator optimization:   0.40 ( 0%) usr   0.01 ( 0%) sys   0.41 ( 0%) wall  
22013 kB ( 8%) ggc    
 tree SRA              :   0.12 ( 0%) usr   0.02 ( 1%) sys   0.14 ( 0%) wall  
11123 kB ( 4%) ggc    
 tree CCP              :   0.47 ( 0%) usr   0.02 ( 1%) sys   0.52 ( 0%) wall   
 838 kB ( 0%) ggc    
 tree PHI const/copy prop:   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall 
     0 kB ( 0%) ggc  
 tree reassociation    :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) wall   
 559 kB ( 0%) ggc    
 tree PRE              :   0.65 ( 0%) usr   0.05 ( 2%) sys   0.70 ( 0%) wall   
7992 kB ( 3%) ggc    
 tree FRE              :   0.43 ( 0%) usr   0.05 ( 2%) sys   0.38 ( 0%) wall   
 530 kB ( 0%) ggc    
 tree code sinking     :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
 360 kB ( 0%) ggc    
 tree linearize phis   :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree forward propagate:   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
 337 kB ( 0%) ggc    
 tree phiprop          :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree conservative DCE :   0.10 ( 0%) usr   0.04 ( 2%) sys   0.11 ( 0%) wall   
  64 kB ( 0%) ggc    
 tree aggressive DCE   :   0.25 ( 0%) usr   0.01 ( 0%) sys   0.29 ( 0%) wall   
4194 kB ( 2%) ggc    
 tree DSE              :   0.90 ( 0%) usr   0.01 ( 0%) sys   0.91 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree loop bounds      :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
 821 kB ( 0%) ggc    
 tree loop invariant motion:   0.05 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%)
wall       0 kB ( 0%) ggc
 tree canonical iv     :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
1012 kB ( 0%) ggc    
 complete unrolling    :   1.38 ( 0%) usr   0.05 ( 2%) sys   1.84 ( 1%) wall  
16838 kB ( 6%) ggc    
 tree loop init        :   0.04 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
 394 kB ( 0%) ggc    
 tree loop fini        :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree copy headers     :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
 613 kB ( 0%) ggc    
 tree SSA uncprop      :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree rename SSA copies:   0.06 ( 0%) usr   0.00 ( 0%) sys   0.06 ( 0%) wall   
   0 kB ( 0%) ggc    
 tree SSA verifier     :   2.85 ( 1%) usr   0.01 ( 0%) sys   2.99 ( 1%) wall   
   0 kB ( 0%) ggc    
 tree STMT verifier    :   5.48 ( 2%) usr   0.00 ( 0%) sys   5.55 ( 2%) wall   
   0 kB ( 0%) ggc    
 tree switch initialization conversion:   0.00 ( 0%) usr   0.00 ( 0%) sys  
0.01 ( 0%) wall       0 kB ( 0%) ggc                                            
 callgraph verifier    :   0.18 ( 0%) usr   0.00 ( 0%) sys   0.16 ( 0%) wall   
   0 kB ( 0%) ggc    
 dominance frontiers   :   6.84 ( 2%) usr   0.01 ( 0%) sys   4.58 ( 2%) wall   
   0 kB ( 0%) ggc    
 dominance computation :   4.91 ( 2%) usr   0.00 ( 0%) sys   3.66 ( 1%) wall   
   0 kB ( 0%) ggc    
 control dependences   :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc    
 out of ssa            :   0.12 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall   
   0 kB ( 0%) ggc    
 expand vars           :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.11 ( 0%) wall   
1109 kB ( 0%) ggc    
 expand                :   0.54 ( 0%) usr   0.02 ( 1%) sys   0.56 ( 0%) wall  
38882 kB (14%) ggc    
 post expand cleanups  :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
   1 kB ( 0%) ggc    
 forward prop          :   0.22 ( 0%) usr   0.01 ( 0%) sys   0.21 ( 0%) wall   
1581 kB ( 1%) ggc    
 CSE                   :   1.07 ( 0%) usr   0.00 ( 0%) sys   1.06 ( 0%) wall   
1762 kB ( 1%) ggc    
 dead code elimination :   0.14 ( 0%) usr   0.00 ( 0%) sys   0.14 ( 0%) wall   
   0 kB ( 0%) ggc    
 dead store elim1      :   0.23 ( 0%) usr   0.00 ( 0%) sys   0.25 ( 0%) wall   
4983 kB ( 2%) ggc    
 dead store elim2      :   0.52 ( 0%) usr   0.00 ( 0%) sys   0.52 ( 0%) wall   
6295 kB ( 2%) ggc    
 loop analysis         :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 0%) wall   
 836 kB ( 0%) ggc    
 loop invariant motion :   5.52 ( 2%) usr   0.00 ( 0%) sys   5.50 ( 2%) wall   
   0 kB ( 0%) ggc    
 CPROP                 :   0.89 ( 0%) usr   0.04 ( 2%) sys   0.94 ( 0%) wall   
8097 kB ( 3%) ggc    
 PRE                   :  10.12 ( 4%) usr   0.11 ( 5%) sys  10.28 ( 4%) wall   
2091 kB ( 1%) ggc    
 CSE 2                 :   0.55 ( 0%) usr   0.00 ( 0%) sys   0.55 ( 0%) wall   
 547 kB ( 0%) ggc    
 branch prediction     :   0.13 ( 0%) usr   0.00 ( 0%) sys   0.13 ( 0%) wall   
1542 kB ( 1%) ggc    
 combiner              :   0.36 ( 0%) usr   0.00 ( 0%) sys   0.36 ( 0%) wall   
4406 kB ( 2%) ggc    
 if-conversion         :   0.03 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
 559 kB ( 0%) ggc
 regmove               :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall   
   0 kB ( 0%) ggc
 integrated RA         :   2.07 ( 1%) usr   0.18 ( 8%) sys   2.26 ( 1%) wall   
5525 kB ( 2%) ggc
 reload                :   0.93 ( 0%) usr   0.00 ( 0%) sys   0.93 ( 0%) wall  
14653 kB ( 5%) ggc
 reload CSE regs       :   1.30 ( 0%) usr   0.00 ( 0%) sys   1.32 ( 0%) wall  
13495 kB ( 5%) ggc
 zee                   :   0.05 ( 0%) usr   0.00 ( 0%) sys   0.04 ( 0%) wall   
   0 kB ( 0%) ggc
 thread pro- & epilogue:   0.06 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall   
   3 kB ( 0%) ggc
 if-conversion 2       :   0.02 ( 0%) usr   0.00 ( 0%) sys   0.02 ( 0%) wall   
 279 kB ( 0%) ggc
 combine stack adjustments:   0.02 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall
      0 kB ( 0%) ggc
 peephole 2            :   0.08 ( 0%) usr   0.00 ( 0%) sys   0.07 ( 0%) wall   
 354 kB ( 0%) ggc
 hard reg cprop        :   0.35 ( 0%) usr   0.00 ( 0%) sys   0.34 ( 0%) wall   
   0 kB ( 0%) ggc
 scheduling 2          :   1.83 ( 1%) usr   0.02 ( 1%) sys   1.94 ( 1%) wall   
  71 kB ( 0%) ggc
 machine dep reorg     :   0.16 ( 0%) usr   0.00 ( 0%) sys   0.17 ( 0%) wall   
   0 kB ( 0%) ggc
 reorder blocks        :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.09 ( 0%) wall   
 891 kB ( 0%) ggc
 final                 :   0.32 ( 0%) usr   0.01 ( 0%) sys   0.33 ( 0%) wall   
   0 kB ( 0%) ggc
 tree if-combine       :   0.01 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 0%) wall   
   0 kB ( 0%) ggc
 rest of compilation   :   0.43 ( 0%) usr   0.00 ( 0%) sys   0.39 ( 0%) wall   
3151 kB ( 1%) ggc
 remove unused locals  :   0.40 ( 0%) usr   0.00 ( 0%) sys   0.45 ( 0%) wall   
   0 kB ( 0%) ggc
 address taken         :   0.10 ( 0%) usr   0.00 ( 0%) sys   0.10 ( 0%) wall   
  32 kB ( 0%) ggc
 unaccounted todo      :   0.13 ( 0%) usr   0.01 ( 0%) sys   0.07 ( 0%) wall   
   0 kB ( 0%) ggc
 verify loop closed    :   0.25 ( 0%) usr   0.00 ( 0%) sys   0.22 ( 0%) wall   
   0 kB ( 0%) ggc
 verify RTL sharing    :   1.59 ( 1%) usr   0.00 ( 0%) sys   1.61 ( 1%) wall   
   0 kB ( 0%) ggc
 repair loop structures:   0.05 ( 0%) usr   0.00 ( 0%) sys   0.05 ( 0%) wall   
 145 kB ( 0%) ggc
 TOTAL                 : 283.50             2.31           286.74            
270936 kB
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --enable-checking=release to disable checks.

real    4m46.813s
user    4m43.509s
sys     0m2.336s

Reply via email to