From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18222 invoked by alias); 8 Jun 2005 12:44:12 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 18176 invoked by uid 48); 8 Jun 2005 12:44:01 -0000 Date: Wed, 08 Jun 2005 12:44:00 -0000 Message-ID: <20050608124401.18175.qmail@sourceware.org> From: "phython at gcc dot gnu dot org" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20041221015654.19097.phython@gcc.gnu.org> References: <20041221015654.19097.phython@gcc.gnu.org> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug rtl-optimization/19097] [3.4/4.0/4.1 regression] Quadratic behavior with many sets for the same register in gcse CPROP X-Bugzilla-Reason: CC X-SW-Source: 2005-06/txt/msg01201.txt.bz2 List-Id: ------- Additional Comments From phython at gcc dot gnu dot org 2005-06-08 12:43 ------- Ok, I seem to be wrong, hash_set still seems to be used for implicit sets. However, the destination registers in gcc 4.1 are all different: SET hash table (1251 buckets, 1001 entries) Index 0 (hash value 339) (set (reg/v:SI 339 [ b ]) (const_int 1 [0x1])) Index 1 (hash value 342) (set (reg:SI 342) (const_int 1000 [0x3e8])) Index 2 (hash value 344) (set (reg:SI 344) (const_int 1001 [0x3e9])) Index 3 (hash value 346) (set (reg:SI 346) (const_int 1002 [0x3ea])) Index 4 (hash value 348) (set (reg:SI 348) (const_int 1003 [0x3eb])) Index 5 (hash value 350) (set (reg:SI 350) (const_int 1004 [0x3ec])) Index 6 (hash value 352) (set (reg:SI 352) (const_int 1005 [0x3ed])) Index 7 (hash value 354) ... Index 999 (hash value 1087) (set (reg:SI 2338) (const_int 1998 [0x7ce])) Index 1000 (hash value 1089) (set (reg:SI 2340) (const_int 1999 [0x7cf])) And the time report for -O2 using CL4 on ia64-linux Execution times (seconds) garbage collection : 1.98 ( 1%) usr 0.00 ( 0%) sys 1.98 ( 1%) wall 0 kB ( 0%) ggc dump files : 1.03 ( 0%) usr 0.06 ( 4%) sys 1.08 ( 0%) wall 0 kB ( 0%) ggc callgraph construction: 4.20 ( 1%) usr 0.01 ( 1%) sys 4.21 ( 1%) wall 12188 kB ( 7%) ggc cfg construction : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.11 ( 0%) wall 2131 kB ( 1%) ggc cfg cleanup : 1.56 ( 0%) usr 0.00 ( 0%) sys 1.56 ( 0%) wall 568 kB ( 0%) ggc CFG verifier : 7.19 ( 2%) usr 0.02 ( 1%) sys 7.21 ( 2%) wall 0 kB ( 0%) ggc trivially dead code : 0.54 ( 0%) usr 0.00 ( 0%) sys 0.54 ( 0%) wall 0 kB ( 0%) ggc life analysis : 4.12 ( 1%) usr 0.00 ( 0%) sys 4.12 ( 1%) wall 4688 kB ( 3%) ggc life info update : 0.83 ( 0%) usr 0.00 ( 0%) sys 0.83 ( 0%) wall 1250 kB ( 1%) ggc alias analysis : 1.02 ( 0%) usr 0.00 ( 0%) sys 1.02 ( 0%) wall 4096 kB ( 2%) ggc register scan : 0.42 ( 0%) usr 0.00 ( 0%) sys 0.42 ( 0%) wall 0 kB ( 0%) ggc rebuild jump labels : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 0 kB ( 0%) ggc preprocessing : 0.11 ( 0%) usr 0.07 ( 4%) sys 0.20 ( 0%) wall 702 kB ( 0%) ggc lexical analysis : 0.08 ( 0%) usr 0.14 ( 8%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc parser : 0.22 ( 0%) usr 0.06 ( 4%) sys 0.28 ( 0%) wall 5672 kB ( 3%) ggc tree gimplify : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.13 ( 0%) wall 625 kB ( 0%) ggc tree eh : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 0 kB ( 0%) ggc tree CFG construction : 0.23 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall 17418 kB (10%) ggc tree CFG cleanup : 1.64 ( 0%) usr 0.00 ( 0%) sys 1.65 ( 0%) wall 0 kB ( 0%) ggc tree VRP : 30.28 ( 9%) usr 0.02 ( 1%) sys 30.31 ( 9%) wall 5568 kB ( 3%) ggc tree copy propagation : 0.60 ( 0%) usr 0.01 ( 1%) sys 0.61 ( 0%) wall 2 kB ( 0%) ggc tree store copy prop : 0.12 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall 0 kB ( 0%) ggc tree find ref. vars : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.04 ( 0%) wall 0 kB ( 0%) ggc tree PTA : 0.20 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall 0 kB ( 0%) ggc tree alias analysis : 0.29 ( 0%) usr 0.10 ( 6%) sys 0.42 ( 0%) wall 2 kB ( 0%) ggc tree PHI insertion : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree SSA rewrite : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 0 kB ( 0%) ggc tree SSA other : 0.15 ( 0%) usr 0.02 ( 1%) sys 0.17 ( 0%) wall 2 kB ( 0%) ggc tree SSA incremental : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 0 kB ( 0%) ggc tree operand scan : 58.50 (18%) usr 0.17 (11%) sys 58.63 (17%) wall 1354 kB ( 1%) ggc dominator optimization: 1.51 ( 0%) usr 0.00 ( 0%) sys 1.51 ( 0%) wall 10313 kB ( 6%) ggc tree STORE-CCP : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.14 ( 0%) wall 0 kB ( 0%) ggc tree CCP : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 0 kB ( 0%) ggc tree split crit edges : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree reassociation : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 0 kB ( 0%) ggc tree PRE : 0.28 ( 0%) usr 0.01 ( 0%) sys 0.29 ( 0%) wall 0 kB ( 0%) ggc tree FRE : 0.17 ( 0%) usr 0.02 ( 1%) sys 0.19 ( 0%) wall 0 kB ( 0%) ggc tree code sinking : 0.21 ( 0%) usr 0.00 ( 0%) sys 0.21 ( 0%) wall 0 kB ( 0%) ggc tree linearize phis : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 0 kB ( 0%) ggc tree forward propagate: 0.05 ( 0%) usr 0.00 ( 0%) sys 0.05 ( 0%) wall 0 kB ( 0%) ggc tree conservative DCE : 0.29 ( 0%) usr 0.00 ( 0%) sys 0.29 ( 0%) wall 0 kB ( 0%) ggc tree aggressive DCE : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.15 ( 0%) wall 0 kB ( 0%) ggc tree DSE : 0.23 ( 0%) usr 0.00 ( 0%) sys 0.23 ( 0%) wall 0 kB ( 0%) ggc PHI merge : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc tree loop init : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 0 kB ( 0%) ggc tree copy headers : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 0 kB ( 0%) ggc tree SSA uncprop : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 0 kB ( 0%) ggc tree SSA to normal : 0.20 ( 0%) usr 0.00 ( 0%) sys 0.20 ( 0%) wall 2 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.57 ( 1%) usr 0.00 ( 0%) sys 2.57 ( 1%) wall 0 kB ( 0%) ggc tree STMT verifier : 7.09 ( 2%) usr 0.07 ( 4%) sys 7.15 ( 2%) wall 0 kB ( 0%) ggc callgraph verifier : 14.63 ( 4%) usr 0.00 ( 0%) sys 14.63 ( 4%) wall 0 kB ( 0%) ggc dominance frontiers : 27.54 ( 8%) usr 0.00 ( 0%) sys 27.54 ( 8%) wall 0 kB ( 0%) ggc control dependences : 0.08 ( 0%) usr 0.00 ( 0%) sys 0.08 ( 0%) wall 0 kB ( 0%) ggc expand : 0.69 ( 0%) usr 0.01 ( 0%) sys 0.70 ( 0%) wall 21941 kB (13%) ggc jump : 0.25 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall 0 kB ( 0%) ggc CSE : 11.83 ( 4%) usr 0.01 ( 0%) sys 11.84 ( 4%) wall 0 kB ( 0%) ggc loop analysis : 0.36 ( 0%) usr 0.00 ( 0%) sys 0.37 ( 0%) wall 3750 kB ( 2%) ggc global CSE : 0.50 ( 0%) usr 0.08 ( 5%) sys 0.58 ( 0%) wall 0 kB ( 0%) ggc CPROP 1 : 1.29 ( 0%) usr 0.07 ( 4%) sys 1.36 ( 0%) wall 2656 kB ( 2%) ggc PRE : 1.65 ( 0%) usr 0.26 (16%) sys 1.91 ( 1%) wall 0 kB ( 0%) ggc CPROP 2 : 1.33 ( 0%) usr 0.07 ( 4%) sys 1.39 ( 0%) wall 2031 kB ( 1%) ggc bypass jumps : 1.35 ( 0%) usr 0.10 ( 6%) sys 1.45 ( 0%) wall 2031 kB ( 1%) ggc CSE 2 : 13.92 ( 4%) usr 0.00 ( 0%) sys 13.92 ( 4%) wall 0 kB ( 0%) ggc branch prediction : 0.92 ( 0%) usr 0.00 ( 0%) sys 0.92 ( 0%) wall 2187 kB ( 1%) ggc flow analysis : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.10 ( 0%) wall 0 kB ( 0%) ggc combiner : 0.79 ( 0%) usr 0.00 ( 0%) sys 0.79 ( 0%) wall 1875 kB ( 1%) ggc if-conversion : 0.52 ( 0%) usr 0.00 ( 0%) sys 0.53 ( 0%) wall 0 kB ( 0%) ggc regmove : 0.25 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall 0 kB ( 0%) ggc scheduling : 31.43 ( 9%) usr 0.01 ( 1%) sys 31.44 ( 9%) wall 4073 kB ( 2%) ggc local alloc : 0.61 ( 0%) usr 0.00 ( 0%) sys 0.61 ( 0%) wall 1193 kB ( 1%) ggc global alloc : 1.57 ( 0%) usr 0.04 ( 3%) sys 1.61 ( 0%) wall 312 kB ( 0%) ggc reload CSE regs : 1.47 ( 0%) usr 0.00 ( 0%) sys 1.47 ( 0%) wall 1875 kB ( 1%) ggc flow 2 : 0.25 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall 3751 kB ( 2%) ggc if-conversion 2 : 0.28 ( 0%) usr 0.00 ( 0%) sys 0.28 ( 0%) wall 0 kB ( 0%) ggc peephole 2 : 0.35 ( 0%) usr 0.00 ( 0%) sys 0.35 ( 0%) wall 0 kB ( 0%) ggc rename registers : 18.93 ( 6%) usr 0.05 ( 3%) sys 18.98 ( 6%) wall 0 kB ( 0%) ggc scheduling 2 : 69.37 (21%) usr 0.12 ( 7%) sys 69.48 (21%) wall 34853 kB (21%) ggc machine dep reorg : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.07 ( 0%) wall 0 kB ( 0%) ggc reorder blocks : 0.75 ( 0%) usr 0.00 ( 0%) sys 0.75 ( 0%) wall 17522 kB (10%) ggc shorten branches : 0.03 ( 0%) usr 0.00 ( 0%) sys 0.03 ( 0%) wall 0 kB ( 0%) ggc final : 0.52 ( 0%) usr 0.01 ( 0%) sys 0.52 ( 0%) wall 0 kB ( 0%) ggc rest of compilation : 0.30 ( 0%) usr 0.00 ( 0%) sys 0.30 ( 0%) wall 1 kB ( 0%) ggc TOTAL : 333.44 1.64 335.08 167877 kB -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19097