diff options
author | Matthew Dempsky <mdempsky@google.com> | 2019-04-17 15:40:46 -0700 |
---|---|---|
committer | Matthew Dempsky <mdempsky@google.com> | 2019-04-17 22:55:26 +0000 |
commit | b5946ed48d75332ba95962a181a28bb6b203459f (patch) | |
tree | bd5b20a63eaab157395bd05205b01c3ed6364046 /test/escape_runtime_atomic.go | |
parent | e92853523d11d1e50d89a3c017c5d902aed0596a (diff) | |
download | go-b5946ed48d75332ba95962a181a28bb6b203459f.tar.gz go-b5946ed48d75332ba95962a181a28bb6b203459f.zip |
test: fix escape_runtime_atomic.go
Casp1 is implemented in Go on js/wasm, so escape analysis correctly
determines that the "old" parameter does not escape (which is good).
Unfortunately, test/run.go doesn't have a way to indicate that ERROR
messages are optional, and cmd/compile only emits diagnostics for "var
x int" when it's moved to the heap; not when it stays on the stack.
To accomodate that this test currently passes on some GOARCHes but not
others, rewrite the Casp1 test to use "x := new(int)" and allow both
"new(int) escapes to heap" or "new(int) does not escape".
Updates #31525.
Change-Id: I40150a7ff9042f184386ccdb2d4d428f63e8ba4f
Reviewed-on: https://go-review.googlesource.com/c/go/+/172602
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'test/escape_runtime_atomic.go')
-rw-r--r-- | test/escape_runtime_atomic.go | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/test/escape_runtime_atomic.go b/test/escape_runtime_atomic.go index efe2013fb9..62e8fede27 100644 --- a/test/escape_runtime_atomic.go +++ b/test/escape_runtime_atomic.go @@ -26,8 +26,8 @@ func Storep() { } func Casp1() { - // BAD: x doesn't need to be heap allocated - var x int // ERROR "moved to heap: x" - var y int // ERROR "moved to heap: y" - atomic.Casp1(&ptr, unsafe.Pointer(&x), unsafe.Pointer(&y)) + // BAD: should always be "does not escape" + x := new(int) // ERROR "escapes to heap|does not escape" + var y int // ERROR "moved to heap: y" + atomic.Casp1(&ptr, unsafe.Pointer(x), unsafe.Pointer(&y)) } |