From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29435 invoked by alias); 20 Dec 2007 16:11:42 -0000 Received: (qmail 29393 invoked by alias); 20 Dec 2007 16:11:31 -0000 Date: Thu, 20 Dec 2007 16:11:00 -0000 Message-ID: <20071220161131.29392.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/26854] Inordinate compile times on large routines In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "lucier at math dot purdue dot edu" 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: 2007-12/txt/msg01910.txt.bz2 ------- Comment #47 from lucier at math dot purdue dot edu 2007-12-20 16:11 ------- Subject: Re: Inordinate compile times on large routines I don't know what's happening here, the patch doesn't apply; first I get euler-13% patch < zadeck2.patch patching file df-problems.c patch: **** malformed patch at line 8: df_chain_flags)df_chain- >local_flags)&(FLAG)) and then after I join this line to the previous one (I think bugzilla reformatted those lines), I get euler-15% !pa patch < zadeck2.patch patching file df-problems.c Hunk #1 FAILED at 1855. 1 out of 2 hunks FAILED -- saving rejects to file df-problems.c.rej euler-16% cat df-problems.c.rej *************** *** 1855,1867 **** #define df_chain_problem_p(FLAG) (((enum df_chain_flags)df_chain- >local_flags)&(FLAG)) /* Create a du or ud chain from SRC to DST and link it into SRC. */ struct df_link * df_chain_create (struct df_ref *src, struct df_ref *dst) { struct df_link *head = DF_REF_CHAIN (src); - struct df_link *link = pool_alloc (df_chain->block_pool);; DF_REF_CHAIN (src) = link; link->next = head; --- 1855,1877 ---- #define df_chain_problem_p(FLAG) (((enum df_chain_flags)df_chain- >local_flags)&(FLAG)) + static long df_chain_counters[4]; + /* Create a du or ud chain from SRC to DST and link it into SRC. */ struct df_link * df_chain_create (struct df_ref *src, struct df_ref *dst) { struct df_link *head = DF_REF_CHAIN (src); + struct df_link *link = pool_alloc (df_chain->block_pool); + int index = 0; + + if (!src->insn) + index += (src->type == DF_REF_REG_DEF) ? 2 : 1; + if (!dst->insn) + index += (dst->type == DF_REF_REG_DEF) ? 2 : 1; + + df_chain_counters[index]++; DF_REF_CHAIN (src) = link; link->next = head; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854