From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28104 invoked by alias); 29 May 2012 07:46:08 -0000 Received: (qmail 28062 invoked by uid 22791); 29 May 2012 07:46:01 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_50,KHOP_THREADED,TW_CF,TW_TM,T_FRT_FREE X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 29 May 2012 07:45:43 +0000 From: "Joost.VandeVondele at mat dot ethz.ch" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/38474] slow compilation at -O0 due to expand's temp slot goo Date: Tue, 29 May 2012 07:53:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Keywords: compile-time-hog, memory-hog, patch X-Bugzilla-Severity: normal X-Bugzilla-Who: Joost.VandeVondele at mat dot ethz.ch X-Bugzilla-Status: REOPENED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: matz at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-05/txt/msg02691.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38474 --- Comment #53 from Joost VandeVondele 2012-05-29 07:45:36 UTC --- For the original testcase I have for trunk (gcc version 4.8.0 20120516 (experimental) [trunk revision 187595] (GCC)) very reasonable times (1min) at -O0, but pretty slow (20min) at -O2. At -O2, all time goes to 'alias stmt walking : 826.02' in the latter case. Time reports below: gfortran -ftime-report -ffree-line-length-512 -g -c testcase.f90 Execution times (seconds) phase setup : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 243 kB ( 0%) ggc phase parsing : 3.59 ( 6%) usr 0.05 ( 5%) sys 3.64 ( 6%) wall 47592 kB ( 7%) ggc phase cgraph : 60.02 (94%) usr 0.90 (95%) sys 60.94 (94%) wall 649547 kB (93%) ggc phase generate : 60.03 (94%) usr 0.90 (95%) sys 60.95 (94%) wall 649948 kB (93%) ggc garbage collection : 1.04 ( 2%) usr 0.00 ( 0%) sys 1.04 ( 2%) wall 0 kB ( 0%) ggc callgraph construction : 0.18 ( 0%) usr 0.01 ( 1%) sys 0.20 ( 0%) wall 15909 kB ( 2%) ggc callgraph optimization : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 201 kB ( 0%) ggc cfg construction : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 7 kB ( 0%) ggc cfg cleanup : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc CFG verifier : 1.16 ( 2%) usr 0.00 ( 0%) sys 1.18 ( 2%) wall 0 kB ( 0%) ggc trivially dead code : 0.34 ( 1%) usr 0.00 ( 0%) sys 0.35 ( 1%) wall 0 kB ( 0%) ggc df scan insns : 1.00 ( 2%) usr 0.25 (26%) sys 1.23 ( 2%) wall 11 kB ( 0%) ggc df live regs : 0.46 ( 1%) usr 0.00 ( 0%) sys 0.49 ( 1%) wall 0 kB ( 0%) ggc df reg dead/unused notes: 0.45 ( 1%) usr 0.01 ( 1%) sys 0.47 ( 1%) wall 19416 kB ( 3%) ggc register information : 0.20 ( 0%) usr 0.01 ( 1%) sys 0.19 ( 0%) wall 0 kB ( 0%) ggc alias analysis : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.17 ( 0%) wall 8336 kB ( 1%) ggc rebuild jump labels : 0.22 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc parser (global) : 3.59 ( 6%) usr 0.05 ( 5%) sys 3.64 ( 6%) wall 47587 kB ( 7%) ggc inline heuristics : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 54 kB ( 0%) ggc tree gimplify : 0.48 ( 1%) usr 0.01 ( 1%) sys 0.49 ( 1%) wall 26304 kB ( 4%) ggc tree eh : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 39 kB ( 0%) ggc tree CFG construction : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 190 kB ( 0%) ggc tree find ref. vars : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 3263 kB ( 0%) ggc tree PHI insertion : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree SSA rewrite : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 43 kB ( 0%) ggc tree SSA other : 0.04 ( 0%) usr 0.02 ( 2%) sys 0.01 ( 0%) wall 18 kB ( 0%) ggc tree operand scan : 0.01 ( 0%) usr 0.01 ( 1%) sys 0.06 ( 0%) wall 118 kB ( 0%) ggc tree SSA verifier : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 0 kB ( 0%) ggc tree STMT verifier : 0.58 ( 1%) usr 0.06 ( 6%) sys 0.62 ( 1%) wall 0 kB ( 0%) ggc callgraph verifier : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.29 ( 0%) wall 0 kB ( 0%) ggc out of ssa : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc expand vars : 21.72 (34%) usr 0.02 ( 2%) sys 21.74 (34%) wall 10086 kB ( 1%) ggc expand : 6.18 (10%) usr 0.15 (16%) sys 6.31 (10%) wall 251886 kB (36%) ggc post expand cleanups : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall 1744 kB ( 0%) ggc integrated RA : 10.75 (17%) usr 0.16 (17%) sys 10.87 (17%) wall 128826 kB (18%) ggc reload : 5.72 ( 9%) usr 0.15 (16%) sys 5.92 ( 9%) wall 123587 kB (18%) ggc thread pro- & epilogue : 2.51 ( 4%) usr 0.00 ( 0%) sys 2.50 ( 4%) wall 198 kB ( 0%) ggc machine dep reorg : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 0 kB ( 0%) ggc final : 2.61 ( 4%) usr 0.04 ( 4%) sys 2.65 ( 4%) wall 7227 kB ( 1%) ggc symout : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 4914 kB ( 1%) ggc rest of compilation : 2.36 ( 4%) usr 0.00 ( 0%) sys 2.35 ( 4%) wall 47578 kB ( 7%) ggc verify RTL sharing : 1.02 ( 2%) usr 0.00 ( 0%) sys 1.04 ( 2%) wall 0 kB ( 0%) ggc TOTAL : 63.65 0.95 64.62 697784 kB gfortran -ftime-report -ffree-line-length-512 -O2 -g -c testcase.f90 Execution times (seconds) phase setup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 243 kB ( 0%) ggc phase parsing : 3.59 ( 0%) usr 0.07 ( 5%) sys 3.66 ( 0%) wall 47596 kB ( 7%) ggc phase cgraph :1031.34 (100%) usr 1.36 (93%) sys1032.77 (100%) wall 630545 kB (91%) ggc phase generate :1031.85 (100%) usr 1.39 (95%) sys1033.30 (100%) wall 643621 kB (93%) ggc garbage collection : 1.74 ( 0%) usr 0.01 ( 1%) sys 1.74 ( 0%) wall 0 kB ( 0%) ggc callgraph construction : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.19 ( 0%) wall 15908 kB ( 2%) ggc callgraph optimization : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 201 kB ( 0%) ggc ipa cp : 0.40 ( 0%) usr 0.12 ( 8%) sys 0.59 ( 0%) wall 6174 kB ( 1%) ggc ipa reference : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc ipa profile : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 0 kB ( 0%) ggc ipa pure const : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall 0 kB ( 0%) ggc cfg construction : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 0 kB ( 0%) ggc cfg cleanup : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 1 kB ( 0%) ggc CFG verifier : 1.84 ( 0%) usr 0.01 ( 1%) sys 1.83 ( 0%) wall 0 kB ( 0%) ggc trivially dead code : 0.46 ( 0%) usr 0.00 ( 0%) sys 0.47 ( 0%) wall 0 kB ( 0%) ggc df scan insns : 0.75 ( 0%) usr 0.08 ( 5%) sys 0.83 ( 0%) wall 11 kB ( 0%) ggc df multiple defs : 0.49 ( 0%) usr 0.00 ( 0%) sys 0.49 ( 0%) wall 0 kB ( 0%) ggc df reaching defs : 1.28 ( 0%) usr 0.02 ( 1%) sys 1.30 ( 0%) wall 0 kB ( 0%) ggc df live regs : 2.22 ( 0%) usr 0.00 ( 0%) sys 2.22 ( 0%) wall 0 kB ( 0%) ggc df live&initialized regs: 1.18 ( 0%) usr 0.00 ( 0%) sys 1.19 ( 0%) wall 0 kB ( 0%) ggc df use-def / def-use chains: 0.46 ( 0%) usr 0.01 ( 1%) sys 0.46 ( 0%) wall 0 kB ( 0%) ggc df reg dead/unused notes: 2.26 ( 0%) usr 0.00 ( 0%) sys 2.29 ( 0%) wall 15547 kB ( 2%) ggc register information : 1.16 ( 0%) usr 0.00 ( 0%) sys 1.15 ( 0%) wall 0 kB ( 0%) ggc alias analysis : 0.60 ( 0%) usr 0.00 ( 0%) sys 0.59 ( 0%) wall 18809 kB ( 3%) ggc alias stmt walking : 826.02 (80%) usr 0.21 (14%) sys 826.21 (80%) wall 0 kB ( 0%) ggc register scan : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall 10 kB ( 0%) ggc rebuild jump labels : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 0 kB ( 0%) ggc parser (global) : 3.59 ( 0%) usr 0.07 ( 5%) sys 3.66 ( 0%) wall 47591 kB ( 7%) ggc inline heuristics : 0.38 ( 0%) usr 0.01 ( 1%) sys 0.35 ( 0%) wall 161 kB ( 0%) ggc integration : 0.01 ( 0%) usr 0.01 ( 1%) sys 0.04 ( 0%) wall 285 kB ( 0%) ggc tree gimplify : 0.48 ( 0%) usr 0.02 ( 1%) sys 0.49 ( 0%) wall 26299 kB ( 4%) ggc tree eh : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 39 kB ( 0%) ggc tree CFG cleanup : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 4 kB ( 0%) ggc tree tail merge : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 0 kB ( 0%) ggc tree VRP : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 394 kB ( 0%) ggc tree copy propagation : 0.20 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall 175 kB ( 0%) ggc tree find ref. vars : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 3262 kB ( 0%) ggc tree PTA : 26.17 ( 3%) usr 0.25 (17%) sys 26.41 ( 3%) wall 36473 kB ( 5%) ggc tree SSA rewrite : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 15685 kB ( 2%) ggc tree SSA other : 0.01 ( 0%) usr 0.02 ( 1%) sys 0.05 ( 0%) wall 18 kB ( 0%) ggc tree SSA incremental : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 14 kB ( 0%) ggc tree operand scan : 0.09 ( 0%) usr 0.01 ( 1%) sys 0.12 ( 0%) wall 8291 kB ( 1%) ggc dominator optimization : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 46 kB ( 0%) ggc tree SRA : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc tree CCP : 0.17 ( 0%) usr 0.00 ( 0%) sys 0.16 ( 0%) wall 107 kB ( 0%) ggc tree reassociation : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 23 kB ( 0%) ggc tree PRE : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall 180 kB ( 0%) ggc tree FRE : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.18 ( 0%) wall 313 kB ( 0%) ggc tree linearize phis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 12 kB ( 0%) ggc tree forward propagate : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 0 kB ( 0%) ggc tree conservative DCE : 0.19 ( 0%) usr 0.03 ( 2%) sys 0.25 ( 0%) wall 0 kB ( 0%) ggc tree aggressive DCE : 0.11 ( 0%) usr 0.02 ( 1%) sys 0.10 ( 0%) wall 295 kB ( 0%) ggc tree buildin call DCE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree DSE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree rename SSA copies : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 0 kB ( 0%) ggc tree SSA verifier : 3.58 ( 0%) usr 0.00 ( 0%) sys 3.64 ( 0%) wall 0 kB ( 0%) ggc tree STMT verifier : 8.91 ( 1%) usr 0.03 ( 2%) sys 8.87 ( 1%) wall 0 kB ( 0%) ggc tree strlen optimization: 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc callgraph verifier : 0.48 ( 0%) usr 0.00 ( 0%) sys 0.46 ( 0%) wall 0 kB ( 0%) ggc dominance computation : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 0 kB ( 0%) ggc out of ssa : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 0 kB ( 0%) ggc expand vars : 96.25 ( 9%) usr 0.00 ( 0%) sys 96.26 ( 9%) wall 9993 kB ( 1%) ggc expand : 1.34 ( 0%) usr 0.06 ( 4%) sys 1.38 ( 0%) wall 119840 kB (17%) ggc post expand cleanups : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 109 kB ( 0%) ggc lower subreg : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 0 kB ( 0%) ggc forward prop : 3.47 ( 0%) usr 0.02 ( 1%) sys 3.48 ( 0%) wall 6588 kB ( 1%) ggc CSE : 0.99 ( 0%) usr 0.01 ( 1%) sys 1.01 ( 0%) wall 13067 kB ( 2%) ggc dead code elimination : 0.41 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%) wall 0 kB ( 0%) ggc dead store elim1 : 0.65 ( 0%) usr 0.02 ( 1%) sys 0.68 ( 0%) wall 1535 kB ( 0%) ggc dead store elim2 : 2.52 ( 0%) usr 0.00 ( 0%) sys 2.53 ( 0%) wall 4393 kB ( 1%) ggc CPROP : 1.83 ( 0%) usr 0.00 ( 0%) sys 1.83 ( 0%) wall 10 kB ( 0%) ggc PRE : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 1 kB ( 0%) ggc CSE 2 : 0.78 ( 0%) usr 0.01 ( 1%) sys 0.78 ( 0%) wall 7470 kB ( 1%) ggc branch prediction : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 41 kB ( 0%) ggc combiner : 0.47 ( 0%) usr 0.01 ( 1%) sys 0.48 ( 0%) wall 12 kB ( 0%) ggc if-conversion : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 22 kB ( 0%) ggc regmove : 0.40 ( 0%) usr 0.00 ( 0%) sys 0.41 ( 0%) wall 0 kB ( 0%) ggc integrated RA : 13.95 ( 1%) usr 0.12 ( 8%) sys 14.05 ( 1%) wall 67921 kB (10%) ggc reload : 3.03 ( 0%) usr 0.04 ( 3%) sys 3.04 ( 0%) wall 52942 kB ( 8%) ggc reload CSE regs : 1.24 ( 0%) usr 0.00 ( 0%) sys 1.25 ( 0%) wall 10704 kB ( 2%) ggc ree : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 1 kB ( 0%) ggc thread pro- & epilogue : 0.46 ( 0%) usr 0.00 ( 0%) sys 0.45 ( 0%) wall 256 kB ( 0%) ggc if-conversion 2 : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 22 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.15 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 15 kB ( 0%) ggc hard reg cprop : 1.12 ( 0%) usr 0.00 ( 0%) sys 1.11 ( 0%) wall 3 kB ( 0%) ggc scheduling 2 : 3.33 ( 0%) usr 0.11 ( 8%) sys 3.44 ( 0%) wall 39009 kB ( 6%) ggc machine dep reorg : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.22 ( 0%) wall 0 kB ( 0%) ggc reorder blocks : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall 2 kB ( 0%) ggc final : 0.87 ( 0%) usr 0.02 ( 1%) sys 0.92 ( 0%) wall 11744 kB ( 2%) ggc symout : 0.74 ( 0%) usr 0.06 ( 4%) sys 0.78 ( 0%) wall 111089 kB (16%) ggc variable tracking : 0.61 ( 0%) usr 0.00 ( 0%) sys 0.61 ( 0%) wall 29367 kB ( 4%) ggc var-tracking dataflow : 3.52 ( 0%) usr 0.00 ( 0%) sys 3.52 ( 0%) wall 0 kB ( 0%) ggc var-tracking emit : 4.20 ( 0%) usr 0.00 ( 0%) sys 4.20 ( 0%) wall 5616 kB ( 1%) ggc rest of compilation : 1.16 ( 0%) usr 0.02 ( 1%) sys 1.27 ( 0%) wall 2733 kB ( 0%) ggc remove unused locals : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.09 ( 0%) wall 0 kB ( 0%) ggc address taken : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 0 kB ( 0%) ggc unaccounted todo : 0.62 ( 0%) usr 0.03 ( 2%) sys 0.66 ( 0%) wall 0 kB ( 0%) ggc verify RTL sharing : 3.87 ( 0%) usr 0.00 ( 0%) sys 3.89 ( 0%) wall 0 kB ( 0%) ggc TOTAL :1035.46 1.46 1036.99 691461 kB