http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50165
--- Comment #3 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2011-08-24 09:53:24 UTC --- The following patch fixes the problem for me: diff --git a/gcc/data-streamer.h b/gcc/data-streamer.h index c413a75..acf1305 100644 --- a/gcc/data-streamer.h +++ b/gcc/data-streamer.h @@ -92,12 +92,7 @@ static inline hashval_t hash_string_slot_node (const void *p) { const struct string_slot *ds = (const struct string_slot *) p; - hashval_t r = ds->len; - int i; - - for (i = 0; i < ds->len; i++) - r = r * 67 + (unsigned)ds->s[i] - 113; - return r; + return (hashval_t) htab_hash_string (ds->s); } /* Returns nonzero if P1 and P2 are equal. */ @@ -107,11 +102,7 @@ eq_string_slot_node (const void *p1, const void *p2) { const struct string_slot *ds1 = (const struct string_slot *) p1; const struct string_slot *ds2 = (const struct string_slot *) p2; - - if (ds1->len == ds2->len) - return memcmp (ds1->s, ds2->s, ds1->len) == 0; - - return 0; + return strcmp (ds1->s, ds2->s) == 0; } /* Returns a new bit-packing context for bit-packing into S. */