------- 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

Reply via email to