mirror of git://gcc.gnu.org/git/gcc.git
re PR middle-end/28071 (A file that can not be compiled in reasonable time/space)
PR rtl-optimization/28071 * hashtab.c (htab_empty): Clear out n_deleted/n_elements; downsize the hashtable. From-SVN: r115779
This commit is contained in:
parent
96d0cc8186
commit
3050098b16
|
@ -1,3 +1,9 @@
|
||||||
|
2006-07-27 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
|
PR rtl-optimization/28071
|
||||||
|
* hashtab.c (htab_empty): Clear out n_deleted/n_elements;
|
||||||
|
downsize the hashtable.
|
||||||
|
|
||||||
2006-07-04 Peter O'Gorman <peter@pogma.com>
|
2006-07-04 Peter O'Gorman <peter@pogma.com>
|
||||||
|
|
||||||
* Makefile.in: chmod 644 before ranlib during install.
|
* Makefile.in: chmod 644 before ranlib during install.
|
||||||
|
|
|
@ -421,7 +421,28 @@ htab_empty (htab_t htab)
|
||||||
if (entries[i] != HTAB_EMPTY_ENTRY && entries[i] != HTAB_DELETED_ENTRY)
|
if (entries[i] != HTAB_EMPTY_ENTRY && entries[i] != HTAB_DELETED_ENTRY)
|
||||||
(*htab->del_f) (entries[i]);
|
(*htab->del_f) (entries[i]);
|
||||||
|
|
||||||
|
/* Instead of clearing megabyte, downsize the table. */
|
||||||
|
if (size > 1024*1024 / sizeof (PTR))
|
||||||
|
{
|
||||||
|
int nindex = higher_prime_index (1024 / sizeof (PTR));
|
||||||
|
int nsize = prime_tab[nindex].prime;
|
||||||
|
|
||||||
|
if (htab->free_f != NULL)
|
||||||
|
(*htab->free_f) (htab->entries);
|
||||||
|
else if (htab->free_with_arg_f != NULL)
|
||||||
|
(*htab->free_with_arg_f) (htab->alloc_arg, htab->entries);
|
||||||
|
if (htab->alloc_with_arg_f != NULL)
|
||||||
|
htab->entries = (PTR *) (*htab->alloc_with_arg_f) (htab->alloc_arg, nsize,
|
||||||
|
sizeof (PTR *));
|
||||||
|
else
|
||||||
|
htab->entries = (PTR *) (*htab->alloc_f) (nsize, sizeof (PTR *));
|
||||||
|
htab->size = nsize;
|
||||||
|
htab->size_prime_index = nindex;
|
||||||
|
}
|
||||||
|
else
|
||||||
memset (entries, 0, size * sizeof (PTR));
|
memset (entries, 0, size * sizeof (PTR));
|
||||||
|
htab->n_deleted = 0;
|
||||||
|
htab->n_elements = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Similar to htab_find_slot, but without several unwanted side effects:
|
/* Similar to htab_find_slot, but without several unwanted side effects:
|
||||||
|
|
Loading…
Reference in New Issue