From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2985 invoked by alias); 11 Mar 2003 20:56:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 2971 invoked by uid 71); 11 Mar 2003 20:56:00 -0000 Date: Tue, 11 Mar 2003 20:56:00 -0000 Message-ID: <20030311205600.2970.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Steven Bosscher Subject: Re: optimization/6798: [3.2/3.3/3.4 regression] very long compile time with large case-statement Reply-To: Steven Bosscher X-SW-Source: 2003-03/txt/msg00597.txt.bz2 List-Id: The following reply was made to PR optimization/6798; it has been noted by GNATS. From: Steven Bosscher To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-prs@gcc.gnu.org, eggert@twinsun.com, reichelt@gcc.gnu.org Cc: Subject: Re: optimization/6798: [3.2/3.3/3.4 regression] very long compile time with large case-statement Date: Tue, 11 Mar 2003 21:47:22 +0100 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=6798 Volker, you said you saw this on Linux? I don't see this bug on i586-linux, so I hope you can confirm this so we can close this PR, or else we should try to find out if this is a target-specific problem. Greetz Steven # cc1 testcase.i yyparse Execution times (seconds) cfg construction : 0.25 ( 5%) usr 0.08 (28%) sys 0.33 ( 6%) wall cfg cleanup : 0.34 ( 6%) usr 0.00 ( 0%) sys 0.34 ( 6%) wall trivially dead code : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall life analysis : 0.15 ( 3%) usr 0.00 ( 0%) sys 0.15 ( 3%) wall life info update : 0.05 ( 1%) usr 0.00 ( 0%) sys 0.05 ( 1%) wall register scan : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall rebuild jump labels : 0.03 ( 1%) usr 0.00 ( 0%) sys 0.03 ( 1%) wall preprocessing : 0.04 ( 1%) usr 0.04 (14%) sys 0.08 ( 1%) wall lexical analysis : 0.09 ( 2%) usr 0.04 (14%) sys 0.13 ( 2%) wall parser : 0.44 ( 8%) usr 0.02 ( 7%) sys 0.46 ( 8%) wall expand : 2.83 (51%) usr 0.02 ( 7%) sys 2.85 (49%) wall integration : 0.04 ( 1%) usr 0.00 ( 0%) sys 0.04 ( 1%) wall jump : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall flow analysis : 0.03 ( 1%) usr 0.01 ( 3%) sys 0.04 ( 1%) wall local alloc : 0.06 ( 1%) usr 0.00 ( 0%) sys 0.06 ( 1%) wall global alloc : 0.51 ( 9%) usr 0.02 ( 7%) sys 0.53 ( 9%) wall flow 2 : 0.21 ( 4%) usr 0.05 (17%) sys 0.26 ( 4%) wall shorten branches : 0.05 ( 1%) usr 0.00 ( 0%) sys 0.05 ( 1%) wall final : 0.13 ( 2%) usr 0.00 ( 0%) sys 0.13 ( 2%) wall rest of compilation : 0.18 ( 3%) usr 0.00 ( 0%) sys 0.18 ( 3%) wall TOTAL : 5.52 0.29 5.81 # cc1 -O testcase.i yyparse Execution times (seconds) cfg construction : 0.36 ( 3%) usr 0.13 (41%) sys 0.49 ( 4%) wall cfg cleanup : 0.57 ( 5%) usr 0.00 ( 0%) sys 0.57 ( 5%) wall trivially dead code : 0.09 ( 1%) usr 0.00 ( 0%) sys 0.09 ( 1%) wall life analysis : 0.55 ( 5%) usr 0.00 ( 0%) sys 0.55 ( 4%) wall life info update : 0.17 ( 1%) usr 0.00 ( 0%) sys 0.17 ( 1%) wall alias analysis : 0.11 ( 1%) usr 0.00 ( 0%) sys 0.11 ( 1%) wall register scan : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall rebuild jump labels : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall preprocessing : 0.12 ( 1%) usr 0.01 ( 3%) sys 0.13 ( 1%) wall lexical analysis : 0.14 ( 1%) usr 0.05 (16%) sys 0.19 ( 2%) wall parser : 0.33 ( 3%) usr 0.02 ( 6%) sys 0.35 ( 3%) wall expand : 2.78 (23%) usr 0.02 ( 6%) sys 2.80 (22%) wall integration : 0.04 ( 0%) usr 0.01 ( 3%) sys 0.05 ( 0%) wall jump : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall CSE : 0.17 ( 1%) usr 0.00 ( 0%) sys 0.18 ( 1%) wall loop analysis : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall branch prediction : 2.90 (24%) usr 0.02 ( 6%) sys 2.96 (23%) wall flow analysis : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall combiner : 0.16 ( 1%) usr 0.00 ( 0%) sys 0.16 ( 1%) wall if-conversion : 0.92 ( 8%) usr 0.00 ( 0%) sys 0.92 ( 7%) wall local alloc : 0.07 ( 1%) usr 0.00 ( 0%) sys 0.07 ( 1%) wall global alloc : 0.39 ( 3%) usr 0.02 ( 6%) sys 0.41 ( 3%) wall reload CSE regs : 0.20 ( 2%) usr 0.00 ( 0%) sys 0.20 ( 2%) wall flow 2 : 0.16 ( 1%) usr 0.02 ( 6%) sys 0.18 ( 1%) wall if-conversion 2 : 0.47 ( 4%) usr 0.00 ( 0%) sys 0.47 ( 4%) wall rename registers : 0.91 ( 7%) usr 0.02 ( 6%) sys 0.95 ( 8%) wall shorten branches : 0.07 ( 1%) usr 0.00 ( 0%) sys 0.07 ( 1%) wall final : 0.11 ( 1%) usr 0.00 ( 0%) sys 0.11 ( 1%) wall rest of compilation : 0.20 ( 2%) usr 0.00 ( 0%) sys 0.20 ( 2%) wall TOTAL : 12.21 0.32 12.62 # cc1 -O2 -march=i586 -v -version testcase.i ignoring nonexistent directory "/opt/experimental/include" ignoring nonexistent directory "/opt/experimental/lib/gcc-lib/i586-pc-linux-gnu/3.4/include" ignoring nonexistent directory "/opt/experimental/i586-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/include End of search list. GNU C version 3.4 20030311 (experimental) (i586-pc-linux-gnu) compiled by GNU C version 2.95.3 20010315 (SuSE). GGC heuristics: --param ggc-min-expand=42 --param ggc-min-heapsize=23891 options passed: -O2 -march=i586 -v options enabled: -feliminate-unused-debug-types -fdefer-pop -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fthread-jumps -fstrength-reduce -fpeephole -fforce-mem -ffunction-cse -fkeep-static-consts -fcaller-saves -fpcc-struct-return -fgcse -fgcse-lm -fgcse-sm -floop-optimize -fcrossjumping -fif-conversion -fif-conversion2 -frerun-cse-after-loop -frerun-loop-opt -fdelete-null-pointer-checks -fschedule-insns2 -fsched-interblock -fsched-spec -fbranch-count-reg -freorder-blocks -freorder-functions -fcprop-registers -fcommon -fgnu-linker -fregmove -foptimize-register-move -fargument-alias -fstrict-aliasing -fmerge-constants -fzero-initialized-in-bss -fident -fpeephole2 -fguess-branch-probability -fmath-errno -ftrapping-math -m80387 -mhard-float -mno-soft-float -mieee-fp -mfp-ret-in-387 -mtune=i586 -march=i586 yyparse Execution times (seconds) cfg construction : 0.45 ( 2%) usr 0.09 (17%) sys 0.54 ( 2%) wall cfg cleanup : 0.78 ( 4%) usr 0.01 ( 2%) sys 0.79 ( 4%) wall trivially dead code : 0.21 ( 1%) usr 0.00 ( 0%) sys 0.21 ( 1%) wall life analysis : 0.60 ( 3%) usr 0.00 ( 0%) sys 0.60 ( 3%) wall life info update : 0.35 ( 2%) usr 0.00 ( 0%) sys 0.35 ( 2%) wall alias analysis : 0.31 ( 1%) usr 0.00 ( 0%) sys 0.31 ( 1%) wall register scan : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall rebuild jump labels : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall preprocessing : 0.04 ( 0%) usr 0.02 ( 4%) sys 0.06 ( 0%) wall lexical analysis : 0.14 ( 1%) usr 0.04 ( 8%) sys 0.18 ( 1%) wall parser : 0.39 ( 2%) usr 0.03 ( 6%) sys 0.42 ( 2%) wall expand : 2.80 (13%) usr 0.05 (10%) sys 2.85 (13%) wall integration : 0.03 ( 0%) usr 0.02 ( 4%) sys 0.05 ( 0%) wall jump : 0.30 ( 1%) usr 0.05 (10%) sys 0.35 ( 2%) wall CSE : 0.45 ( 2%) usr 0.00 ( 0%) sys 0.45 ( 2%) wall global CSE : 2.44 (12%) usr 0.08 (15%) sys 2.52 (12%) wall loop analysis : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall bypass jumps : 1.09 ( 5%) usr 0.02 ( 4%) sys 1.11 ( 5%) wall CSE 2 : 0.15 ( 1%) usr 0.00 ( 0%) sys 0.15 ( 1%) wall branch prediction : 2.91 (14%) usr 0.02 ( 4%) sys 2.93 (14%) wall flow analysis : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall combiner : 0.27 ( 1%) usr 0.00 ( 0%) sys 0.27 ( 1%) wall if-conversion : 0.96 ( 5%) usr 0.00 ( 0%) sys 0.96 ( 4%) wall regmove : 0.06 ( 0%) usr 0.00 ( 0%) sys 0.06 ( 0%) wall local alloc : 0.11 ( 1%) usr 0.00 ( 0%) sys 0.11 ( 1%) wall global alloc : 0.30 ( 1%) usr 0.02 ( 4%) sys 0.32 ( 1%) wall reload CSE regs : 0.42 ( 2%) usr 0.00 ( 0%) sys 0.42 ( 2%) wall flow 2 : 0.16 ( 1%) usr 0.02 ( 4%) sys 0.18 ( 1%) wall if-conversion 2 : 0.55 ( 3%) usr 0.00 ( 0%) sys 0.55 ( 3%) wall peephole 2 : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall rename registers : 0.94 ( 4%) usr 0.03 ( 6%) sys 0.97 ( 4%) wall scheduling 2 : 2.69 (13%) usr 0.01 ( 2%) sys 2.75 (13%) wall reorder blocks : 0.35 ( 2%) usr 0.00 ( 0%) sys 0.35 ( 2%) wall shorten branches : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall final : 0.12 ( 1%) usr 0.00 ( 0%) sys 0.12 ( 1%) wall rest of compilation : 0.24 ( 1%) usr 0.00 ( 0%) sys 0.24 ( 1%) wall TOTAL : 21.03 0.52 21.60