diff options
| author | Laurynas Biveinis <laurynas.biveinis@gmail.com> | 2010-05-26 11:24:42 +0000 | 
|---|---|---|
| committer | Laurynas Biveinis <lauras@gcc.gnu.org> | 2010-05-26 11:24:42 +0000 | 
| commit | e4dfaf724fb00007371cf3ff0ee86b5ec52cc558 (patch) | |
| tree | 37c08416aaec00456b907de173556f4632bab3b8 /gcc | |
| parent | e12da9c28bfa69bb6fc868841855851527a3db14 (diff) | |
| download | gcc-e4dfaf724fb00007371cf3ff0ee86b5ec52cc558.zip gcc-e4dfaf724fb00007371cf3ff0ee86b5ec52cc558.tar.gz gcc-e4dfaf724fb00007371cf3ff0ee86b5ec52cc558.tar.bz2 | |
ggc-zone.c: Update copyright year.
2010-05-26  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
	* ggc-zone.c: Update copyright year.
	(poison_region): Mark memory for Valgrind as undefined before
	memset () call and inaccessible afterwards.
	(ggc_pch_total_size): Change type of i to int.
2010-05-26  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
	* ggc-common.c (ggc_free_overhead): Allow empty slot.
2010-05-26  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
	* ggc-common.c: Update copyright year.
	(ggc_rlimit_bound): Remove prototype.  Compile only if
	!ENABLE_GC_CHECKING && !ENABLE_GC_ALWAYS_COLLECT.
	(ggc_min_heapsize_heuristic): Compile only if !ENABLE_GC_CHECKING
	&& !ENABLE_GC_ALWAYS_COLLECT.  Make static.
	(ggc_min_heapsize_heuristic): Likewise.
From-SVN: r159863
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 20 | ||||
| -rw-r--r-- | gcc/ggc-common.c | 20 | ||||
| -rw-r--r-- | gcc/ggc-zone.c | 14 | 
3 files changed, 43 insertions, 11 deletions
| diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7996315..4e02230 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2010-05-26  Laurynas Biveinis  <laurynas.biveinis@gmail.com> + +	* ggc-zone.c: Update copyright year. +	(poison_region): Mark memory for Valgrind as undefined before +	memset () call and inaccessible afterwards. +	(ggc_pch_total_size): Change type of i to int. + +2010-05-26  Laurynas Biveinis  <laurynas.biveinis@gmail.com> + +	* ggc-common.c (ggc_free_overhead): Allow empty slot. + +2010-05-26  Laurynas Biveinis  <laurynas.biveinis@gmail.com> + +	* ggc-common.c: Update copyright year. +	(ggc_rlimit_bound): Remove prototype.  Compile only if +	!ENABLE_GC_CHECKING && !ENABLE_GC_ALWAYS_COLLECT. +	(ggc_min_heapsize_heuristic): Compile only if !ENABLE_GC_CHECKING +	&& !ENABLE_GC_ALWAYS_COLLECT.  Make static. +	(ggc_min_heapsize_heuristic): Likewise. +  2010-05-26  Richard Guenther  <rguenther@suse.de>  	PR rtl-optimization/44164 diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c index 28c2b79..76bf975 100644 --- a/gcc/ggc-common.c +++ b/gcc/ggc-common.c @@ -1,6 +1,6 @@  /* Simple garbage collection for the GNU compiler. -   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -   Free Software Foundation, Inc. +   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +   2009, 2010 Free Software Foundation, Inc.  This file is part of GCC. @@ -70,7 +70,6 @@ static int compare_ptr_data (const void *, const void *);  static void relocate_ptrs (void *, void *);  static void write_pch_globals (const struct ggc_root_tab * const *tab,  			       struct traversal_state *state); -static double ggc_rlimit_bound (double);  /* Maintain global roots that are preserved during GC.  */ @@ -742,6 +741,8 @@ mmap_gt_pch_use_address (void *base, size_t size, int fd, size_t offset)  }  #endif /* HAVE_MMAP_FILE */ +#if !defined ENABLE_GC_CHECKING && !defined ENABLE_GC_ALWAYS_COLLECT +  /* Modify the bound based on rlimits.  */  static double  ggc_rlimit_bound (double limit) @@ -776,7 +777,7 @@ ggc_rlimit_bound (double limit)  }  /* Heuristic to set a default for GGC_MIN_EXPAND.  */ -int +static int  ggc_min_expand_heuristic (void)  {    double min_expand = physmem_total(); @@ -795,7 +796,7 @@ ggc_min_expand_heuristic (void)  }  /* Heuristic to set a default for GGC_MIN_HEAPSIZE.  */ -int +static int  ggc_min_heapsize_heuristic (void)  {    double phys_kbytes = physmem_total(); @@ -832,6 +833,7 @@ ggc_min_heapsize_heuristic (void)    return phys_kbytes;  } +#endif  void  init_ggc_heuristics (void) @@ -980,7 +982,13 @@ ggc_free_overhead (void *ptr)  {    PTR *slot = htab_find_slot_with_hash (ptr_hash, ptr, htab_hash_pointer (ptr),  					NO_INSERT); -  struct ptr_hash_entry *p = (struct ptr_hash_entry *) *slot; +  struct ptr_hash_entry *p; +  /* The pointer might be not found if a PCH read happened between allocation +     and ggc_free () call.  FIXME: account memory properly in the presence of +     PCH. */ +  if (!slot) +      return; +  p = (struct ptr_hash_entry *) *slot;    p->loc->freed += p->size;    htab_clear_slot (ptr_hash, slot);    free (p); diff --git a/gcc/ggc-zone.c b/gcc/ggc-zone.c index bc775b1..a8154cc 100644 --- a/gcc/ggc-zone.c +++ b/gcc/ggc-zone.c @@ -1,6 +1,6 @@  /* "Bag-of-pages" zone garbage collector for the GNU compiler. -   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 -   Free Software Foundation, Inc. +   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, +   2010 Free Software Foundation, Inc.     Contributed by Richard Henderson (rth@redhat.com) and Daniel Berlin     (dberlin@dberlin.org).  Rewritten by Daniel Jacobowitz @@ -1385,8 +1385,12 @@ ggc_alloc_stat (size_t size MEM_STAT_DECL)  /* Poison the chunk.  */  #ifdef ENABLE_GC_CHECKING -#define poison_region(PTR, SIZE) \ -  memset ((PTR), 0xa5, (SIZE)) +#define poison_region(PTR, SIZE)				      \ +  do {								      \ +    VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED ((PTR), (SIZE)));   \ +    memset ((PTR), 0xa5, (SIZE));				      \ +    VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS ((PTR), (SIZE)));    \ +  } while (0)  #else  #define poison_region(PTR, SIZE)  #endif @@ -2349,7 +2353,7 @@ ggc_pch_count_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED,  size_t  ggc_pch_total_size (struct ggc_pch_data *d)  { -  enum gt_types_enum i; +  int i;    size_t alloc_size, total_size;    total_size = 0; | 
