From: sayle Date: Fri, 22 Aug 2003 22:29:17 +0000 (+0000) Subject: * hashtable.c (ht_expand): Avoid calculating rehash for the common X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec64a609bf7f60b8d6c0329280df99fbe5d8ca6c;p=thirdparty%2Fgcc.git * hashtable.c (ht_expand): Avoid calculating rehash for the common case that the first probe hits an empty hash table slot. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70706 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3dd61eb896a1..f97afe2b005c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-08-22 Roger Sayle + + * hashtable.c (ht_expand): Avoid calculating rehash for the common + case that the first probe hits an empty hash table slot. + 2003-08-22 Mark Mitchell * config/ia64/hpux.h (SUPPORTS_INIT_PRIORITY): Define to 0. diff --git a/gcc/hashtable.c b/gcc/hashtable.c index 41551394f8aa..58f19d055fc2 100644 --- a/gcc/hashtable.c +++ b/gcc/hashtable.c @@ -184,19 +184,18 @@ ht_expand (hash_table *table) unsigned int index, hash, hash2; hash = (*p)->hash_value; - hash2 = ((hash * 17) & sizemask) | 1; index = hash & sizemask; - for (;;) + if (nentries[index]) { - if (! nentries[index]) + hash2 = ((hash * 17) & sizemask) | 1; + do { - nentries[index] = *p; - break; + index = (index + hash2) & sizemask; } - - index = (index + hash2) & sizemask; + while (nentries[index]); } + nentries[index] = *p; } while (++p < limit);