Reduce overhead of stmt annotations

Jan Hubicka jh@suse.cz
Wed Sep 1 21:03:00 GMT 2004


Hi,
30% of GGC overhead on combine.c compilation (3MB) comes to stmt
annotations.

Bootstrapping/regtesting i686-pc-gnu-linux, OK if it passes?

Honza

2004-09-01  Jan Hubicka  <jh@suse.cz>
	* ggc-page.c: include tree-flow.h.
	(extra_order_size_table): Add stmt_ann_d.
	(STAT_LABEL): Rename from ....
	(LABEL): ... this one.
	* Makefile.in (ggc-page.o): Add dependency.
Index: ggc-page.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ggc-page.c,v
retrieving revision 1.51.2.22.2.3
diff -c -3 -p -r1.51.2.22.2.3 ggc-page.c
*** ggc-page.c	30 Mar 2004 23:19:13 -0000	1.51.2.22.2.3
--- ggc-page.c	1 Sep 2004 20:56:42 -0000
*************** Software Foundation, 59 Temple Place - S
*** 31,36 ****
--- 31,37 ----
  #include "ggc.h"
  #include "timevar.h"
  #include "params.h"
+ #include "tree-flow.h"
  #ifdef ENABLE_VALGRIND_CHECKING
  # ifdef HAVE_VALGRIND_MEMCHECK_H
  #  include <valgrind/memcheck.h>
*************** Software Foundation, 59 Temple Place - S
*** 184,189 ****
--- 185,191 ----
     thing you need to do to add a new special allocation size.  */
  
  static const size_t extra_order_size_table[] = {
+   sizeof (struct stmt_ann_d),
    sizeof (struct tree_decl),
    sizeof (struct tree_list),
    TREE_EXP_SIZE (2),
*************** ggc_collect (void)
*** 2013,2019 ****
  		  : ((x) < 1024*1024*10 \
  		     ? (x) / 1024 \
  		     : (x) / (1024*1024))))
! #define LABEL(x) ((x) < 1024*10 ? ' ' : ((x) < 1024*1024*10 ? 'k' : 'M'))
  
  void
  ggc_print_statistics (void)
--- 2023,2029 ----
  		  : ((x) < 1024*1024*10 \
  		     ? (x) / 1024 \
  		     : (x) / (1024*1024))))
! #define STAT_LABEL(x) ((x) < 1024*10 ? ' ' : ((x) < 1024*1024*10 ? 'k' : 'M'))
  
  void
  ggc_print_statistics (void)
*************** ggc_print_statistics (void)
*** 2068,2082 ****
  	}
        fprintf (stderr, "%-5lu %10lu%c %10lu%c %10lu%c\n",
  	       (unsigned long) OBJECT_SIZE (i),
! 	       SCALE (allocated), LABEL (allocated),
! 	       SCALE (in_use), LABEL (in_use),
! 	       SCALE (overhead), LABEL (overhead));
        total_overhead += overhead;
      }
    fprintf (stderr, "%-5s %10lu%c %10lu%c %10lu%c\n", "Total",
! 	   SCALE (G.bytes_mapped), LABEL (G.bytes_mapped),
! 	   SCALE (G.allocated), LABEL(G.allocated),
! 	   SCALE (total_overhead), LABEL (total_overhead));
  
  #ifdef GATHER_STATISTICS  
    {
--- 2078,2092 ----
  	}
        fprintf (stderr, "%-5lu %10lu%c %10lu%c %10lu%c\n",
  	       (unsigned long) OBJECT_SIZE (i),
! 	       SCALE (allocated), STAT_LABEL (allocated),
! 	       SCALE (in_use), STAT_LABEL (in_use),
! 	       SCALE (overhead), STAT_LABEL (overhead));
        total_overhead += overhead;
      }
    fprintf (stderr, "%-5s %10lu%c %10lu%c %10lu%c\n", "Total",
! 	   SCALE (G.bytes_mapped), STAT_LABEL (G.bytes_mapped),
! 	   SCALE (G.allocated), STAT_LABEL(G.allocated),
! 	   SCALE (total_overhead), STAT_LABEL (total_overhead));
  
  #ifdef GATHER_STATISTICS  
    {
Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Makefile.in,v
retrieving revision 1.903.2.179.2.13
diff -c -3 -p -r1.903.2.179.2.13 Makefile.in
*** Makefile.in	28 Aug 2004 17:26:33 -0000	1.903.2.179.2.13
--- Makefile.in	1 Sep 2004 20:56:42 -0000
*************** ggc-common.o: ggc-common.c $(CONFIG_H) $
*** 1549,1555 ****
  	$(HASHTAB_H) toplev.h $(PARAMS_H) hosthooks.h
  
  ggc-page.o: ggc-page.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
! 	flags.h toplev.h $(GGC_H) $(TIMEVAR_H) $(TM_P_H) $(PARAMS_H)
  
  ggc-zone.o: ggc-zone.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
  	flags.h toplev.h $(GGC_H) $(TIMEVAR_H) $(TM_P_H) $(PARAMS_H)
--- 1549,1555 ----
  	$(HASHTAB_H) toplev.h $(PARAMS_H) hosthooks.h
  
  ggc-page.o: ggc-page.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
! 	flags.h toplev.h $(GGC_H) $(TIMEVAR_H) $(TM_P_H) $(PARAMS_H) $(TREE_FLOW_H)
  
  ggc-zone.o: ggc-zone.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
  	flags.h toplev.h $(GGC_H) $(TIMEVAR_H) $(TM_P_H) $(PARAMS_H)



More information about the Gcc-patches mailing list