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