From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15576 invoked by alias); 20 Dec 2007 14:49:25 -0000 Received: (qmail 15505 invoked by alias); 20 Dec 2007 14:49:12 -0000 Date: Thu, 20 Dec 2007 14:49:00 -0000 Message-ID: <20071220144912.15504.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: "zadeck at naturalbridge dot com" 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/msg01905.txt.bz2 ------- Comment #43 from zadeck at naturalbridge dot com 2007-12-20 14:49 ------- Subject: Re: Inordinate compile times on large routines lucier at math dot purdue dot edu wrote: > ------- Comment #42 from lucier at math dot purdue dot edu 2007-12-20 03:52 ------- > Created an attachment (id=14799) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14799&action=view) > --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14799&action=view) > memory details for an unpatched mainline > > Here is the same information without Steven's two patches for mainline. > > > Could you add the attached patch in and rerun your example? It will add 4 lines to indicate what kinds of def-use and use-def chains are being created. A lot of the space is being used by these chains and I want to find out how many of those chains are for artificial uses and defs. thanks kenny Index: df-problems.c =================================================================== --- df-problems.c (revision 131096) +++ df-problems.c (working copy) @@ -1855,13 +1855,23 @@ df_live_verify_transfer_functions (void) #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);; + 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 += (src->type == DF_REF_REG_DEF) ? 2 : 1; + + df_chain_counters[index]++; DF_REF_CHAIN (src) = link; link->next = head; @@ -2156,11 +2166,18 @@ df_chain_finalize (bitmap all_blocks) { unsigned int bb_index; bitmap_iterator bi; - + + memset (df_chain_counters, 0, 4*sizeof(long)); + EXECUTE_IF_SET_IN_BITMAP (all_blocks, 0, bb_index, bi) { df_chain_create_bb (bb_index); } + + fprintf (stderr, "real -> real = %ld\n", df_chain_counters[0]); + fprintf (stderr, "real -> art = %ld\n", df_chain_counters[1]); + fprintf (stderr, "art -> real = %ld\n", df_chain_counters[2]); + fprintf (stderr, "art -> art = %ld\n", df_chain_counters[3]); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854