projects
/
gcc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
dbe1e4a
)
re PR go/52342 (64-bit go.test/test/chan/doubleselect.go times out on Solaris/SPARC)
author
Ian Lance Taylor
<ian@gcc.gnu.org>
Mon, 5 Mar 2012 06:39:08 +0000
(06:39 +0000)
committer
Ian Lance Taylor
<ian@gcc.gnu.org>
Mon, 5 Mar 2012 06:39:08 +0000
(06:39 +0000)
PR go/52342
runtime: Better big-endian identity hash function.
From-SVN: r184914
libgo/runtime/go-type-identity.c
patch
|
blob
|
history
diff --git
a/libgo/runtime/go-type-identity.c
b/libgo/runtime/go-type-identity.c
index 142edf424640614456a644fa2624b6540dae5c87..a50a8a131a1305ed55620452a7f2977f2a064500 100644
(file)
--- 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