aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/internal
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2019-04-17 11:23:53 -0700
committerMatthew Dempsky <mdempsky@google.com>2019-04-17 19:09:15 +0000
commit9dce58d30d1005e0cbac40789429cd3543d80836 (patch)
treeed5d8f5debbfeb54caab67341a84b731a404f6b6 /src/runtime/internal
parente5986209e082cd207989d7f8759ba92e3f9dd8cb (diff)
downloadgo-9dce58d30d1005e0cbac40789429cd3543d80836.tar.gz
go-9dce58d30d1005e0cbac40789429cd3543d80836.zip
runtime/internal/atomic: remove bad go:noescape annotations on Loadp
The //go:noescape directive says that arguments don't leak at all, which is too aggressive of a claim for functions that return pointers derived from their parameters. Remove the directive for now. Long term fix will require a new directive that allows more fine-grained control over escape analysis information supplied for functions implemented in assembly. Also, update the BAD comments in the test cases for Loadp: we really want that *ptr leaks to the result parameter, not that *ptr leaks to the heap. Updates #31525. Change-Id: Ibfa61f2b70daa7ed3223056b57eeee777eef2e31 Reviewed-on: https://go-review.googlesource.com/c/go/+/172578 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'src/runtime/internal')
-rw-r--r--src/runtime/internal/atomic/atomic_arm.go2
-rw-r--r--src/runtime/internal/atomic/atomic_arm64.go2
-rw-r--r--src/runtime/internal/atomic/atomic_mips64x.go2
-rw-r--r--src/runtime/internal/atomic/atomic_mipsx.go2
-rw-r--r--src/runtime/internal/atomic/atomic_ppc64x.go2
5 files changed, 5 insertions, 5 deletions
diff --git a/src/runtime/internal/atomic/atomic_arm.go b/src/runtime/internal/atomic/atomic_arm.go
index 51b42ba238..abedee0e35 100644
--- a/src/runtime/internal/atomic/atomic_arm.go
+++ b/src/runtime/internal/atomic/atomic_arm.go
@@ -181,7 +181,7 @@ func armcas(ptr *uint32, old, new uint32) bool
//go:noescape
func Load(addr *uint32) uint32
-//go:noescape
+// NO go:noescape annotation; *addr escapes if result escapes (#31525)
func Loadp(addr unsafe.Pointer) unsafe.Pointer
//go:noescape
diff --git a/src/runtime/internal/atomic/atomic_arm64.go b/src/runtime/internal/atomic/atomic_arm64.go
index a2da27e7ed..8e83cc6f53 100644
--- a/src/runtime/internal/atomic/atomic_arm64.go
+++ b/src/runtime/internal/atomic/atomic_arm64.go
@@ -32,7 +32,7 @@ func Load(ptr *uint32) uint32
//go:noescape
func Load64(ptr *uint64) uint64
-//go:noescape
+// NO go:noescape annotation; *ptr escapes if result escapes (#31525)
func Loadp(ptr unsafe.Pointer) unsafe.Pointer
//go:noescape
diff --git a/src/runtime/internal/atomic/atomic_mips64x.go b/src/runtime/internal/atomic/atomic_mips64x.go
index 98a8fca929..ca2e509266 100644
--- a/src/runtime/internal/atomic/atomic_mips64x.go
+++ b/src/runtime/internal/atomic/atomic_mips64x.go
@@ -32,7 +32,7 @@ func Load(ptr *uint32) uint32
//go:noescape
func Load64(ptr *uint64) uint64
-//go:noescape
+// NO go:noescape annotation; *ptr escapes if result escapes (#31525)
func Loadp(ptr unsafe.Pointer) unsafe.Pointer
//go:noescape
diff --git a/src/runtime/internal/atomic/atomic_mipsx.go b/src/runtime/internal/atomic/atomic_mipsx.go
index 1cd6d9a9ce..79eb582232 100644
--- a/src/runtime/internal/atomic/atomic_mipsx.go
+++ b/src/runtime/internal/atomic/atomic_mipsx.go
@@ -116,7 +116,7 @@ func Xchguintptr(ptr *uintptr, new uintptr) uintptr
//go:noescape
func Load(ptr *uint32) uint32
-//go:noescape
+// NO go:noescape annotation; *ptr escapes if result escapes (#31525)
func Loadp(ptr unsafe.Pointer) unsafe.Pointer
//go:noescape
diff --git a/src/runtime/internal/atomic/atomic_ppc64x.go b/src/runtime/internal/atomic/atomic_ppc64x.go
index 4f1a95c5bd..0e9a51f6a1 100644
--- a/src/runtime/internal/atomic/atomic_ppc64x.go
+++ b/src/runtime/internal/atomic/atomic_ppc64x.go
@@ -32,7 +32,7 @@ func Load(ptr *uint32) uint32
//go:noescape
func Load64(ptr *uint64) uint64
-//go:noescape
+// NO go:noescape annotation; *ptr escapes if result escapes (#31525)
func Loadp(ptr unsafe.Pointer) unsafe.Pointer
//go:noescape