aboutsummaryrefslogtreecommitdiff
path: root/test/escape_runtime_atomic.go
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2019-04-17 15:40:46 -0700
committerMatthew Dempsky <mdempsky@google.com>2019-04-17 22:55:26 +0000
commitb5946ed48d75332ba95962a181a28bb6b203459f (patch)
treebd5b20a63eaab157395bd05205b01c3ed6364046 /test/escape_runtime_atomic.go
parente92853523d11d1e50d89a3c017c5d902aed0596a (diff)
downloadgo-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.go8
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))
}