From: Austin Clements Date: Tue, 11 Jul 2017 15:03:36 +0000 (-0400) Subject: sync/atomic: clarify 64-bit alignment bug X-Git-Tag: go1.9rc1~80 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=fea7c43ea238d8e18f3bafaac2740b3fa8975ae5;p=gostls13.git sync/atomic: clarify 64-bit alignment bug Local variables can also be relied on the be 64-bit aligned, since they will be escaped to the heap if used with any atomic operations. Also, allocated arrays are also aligned, just like structs and slices. Fixes #18955. Change-Id: I8a1897f6ff78922c8bfcf20d6eb4bcb17a70ba2d Reviewed-on: https://go-review.googlesource.com/48112 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/sync/atomic/doc.go b/src/sync/atomic/doc.go index 302ff43070..7c007d7a15 100644 --- a/src/sync/atomic/doc.go +++ b/src/sync/atomic/doc.go @@ -48,8 +48,8 @@ import ( // On non-Linux ARM, the 64-bit functions use instructions unavailable before the ARMv6k core. // // On both ARM and x86-32, it is the caller's responsibility to arrange for 64-bit -// alignment of 64-bit words accessed atomically. The first word in a global -// variable or in an allocated struct or slice can be relied upon to be +// alignment of 64-bit words accessed atomically. The first word in a +// variable or in an allocated struct, array, or slice can be relied upon to be // 64-bit aligned. // SwapInt32 atomically stores new into *addr and returns the previous *addr value.