merge from gcc

This commit is contained in:
DJ Delorie 2013-04-23 04:05:04 +00:00
parent a11cfd87c0
commit 29f045bb48
2 changed files with 29 additions and 8 deletions

View File

@ -1,3 +1,7 @@
2013-04-22 Andi Kleen <ak@linux.intel.com>
* hashtab.c (hash_pointer): Move to end of file and reimplement.
2013-04-03 Jason Merrill <jason@redhat.com>
* cp-demangle.c (cplus_demangle_type): Fix function quals.

View File

@ -194,14 +194,6 @@ higher_prime_index (unsigned long n)
return low;
}
/* Returns a hash code for P. */
static hashval_t
hash_pointer (const PTR p)
{
return (hashval_t) ((intptr_t)p >> 3);
}
/* Returns non-zero if P1 and P2 are equal. */
static int
@ -988,3 +980,28 @@ iterative_hash (const PTR k_in /* the key */,
/*-------------------------------------------- report the result */
return c;
}
/* Returns a hash code for pointer P. Simplified version of evahash */
static hashval_t
hash_pointer (const PTR p)
{
intptr_t v = (intptr_t) p;
unsigned a, b, c;
a = b = 0x9e3779b9;
if (sizeof (intptr_t) == 4)
{
/* Mix as 16bit for now */
a += v >> 16;
b += v & 0xffff;
}
else
{
a += v >> 32;
b += v & 0xffffffff;
}
c = 0x42135234;
mix (a, b, c);
return c;
}