diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-03-05 06:39:08 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-03-05 06:39:08 +0000 |
commit | 5e60b5708e2184c7ca0cb5bab995248d185a7bac (patch) | |
tree | da22a7e051bf39bc7d2f04bf8bae6456b8b0f3df /libgo | |
parent | dbe1e4a5a679295a1eeb1dc4b1d56acd0d3614d7 (diff) | |
download | gcc-5e60b5708e2184c7ca0cb5bab995248d185a7bac.zip gcc-5e60b5708e2184c7ca0cb5bab995248d185a7bac.tar.gz gcc-5e60b5708e2184c7ca0cb5bab995248d185a7bac.tar.bz2 |
re PR go/52342 (64-bit go.test/test/chan/doubleselect.go times out on Solaris/SPARC)
PR go/52342
runtime: Better big-endian identity hash function.
From-SVN: r184914
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/runtime/go-type-identity.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libgo/runtime/go-type-identity.c b/libgo/runtime/go-type-identity.c index 142edf4..a50a8a1 100644 --- a/libgo/runtime/go-type-identity.c +++ b/libgo/runtime/go-type-identity.c @@ -6,6 +6,7 @@ #include <stddef.h> +#include "config.h" #include "go-type.h" /* The 64-bit type. */ @@ -31,7 +32,11 @@ __go_type_hash_identity (const void *key, uintptr_t key_size) unsigned char a[8]; } u; u.v = 0; - __builtin_memcpy (&u.a, key, key_size); +#ifdef WORDS_BIGENDIAN + __builtin_memcpy (&u.a[8 - key_size], key, key_size); +#else + __builtin_memcpy (&u.a[0], key, key_size); +#endif if (sizeof (uintptr_t) >= 8) return (uintptr_t) u.v; else |