From b5946ed48d75332ba95962a181a28bb6b203459f Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Wed, 17 Apr 2019 15:40:46 -0700 Subject: [PATCH] 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 Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- test/escape_runtime_atomic.go | 8 ++++---- 1 file 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)) }