This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC 3.2.1 -> GCC 3.3 compile speed regression


	
This leads me to the following half-baked hypothesis: Some kinds of
data/information that used to persist across the entire compilation
are now created and destroyed repeatedly in some local temporal scope,
like the compilation of a single function.  This hypothesis would
explain not only the increased number of gc passes, but also the
overall performance degradation we see (even with gc turned off).
I found following differences in source

1) In alias.c
'reg_base_value' is allocated using ggc_alloc_cleared() instead of xcalloc(). And it is done in init_alias_analysis() which is called from many places.

2) In except.c
'entry' is allocated now using ggc_alloc() inside add_ehl_entry(). It used xmalloc earlier. eh_region is now allocated using ggc_alloc_cleared() instead of xcalloc() inside duplicate_eh_region_1().

3) In cselib.c
'elt_list's are now allocated using ggc_alloc() instead of obstack_alloc(). Same for 'cselib_val'.

4) spew.c now uses gcc_alloc instead of obstack.

-Devang


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]