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>
|
||||
|
||||
* 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)
|
||||
(*htab->del_f) (entries[i]);
|
||||
|
||||
memset (entries, 0, size * sizeof (PTR));
|
||||
/* 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));
|
||||
htab->n_deleted = 0;
|
||||
htab->n_elements = 0;
|
||||
}
|
||||
|
||||
/* Similar to htab_find_slot, but without several unwanted side effects:
|
||||
|
Loading…
Reference in New Issue
Block a user