aboutsummaryrefslogtreecommitdiff
path: root/test/escape_runtime_atomic.go
AgeCommit message (Collapse)Author
2019-04-17test: fix escape_runtime_atomic.goMatthew Dempsky
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>
2019-04-17runtime/internal/atomic: remove bad go:noescape annotations on LoadpMatthew Dempsky
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>
2019-04-17test: add escape regress tests for runtime and sync atomicsMatthew Dempsky
There weren't any tests to make sure these work correctly, and this led to escape analysis regressions in both linux/s390x and js/wasm. The underlying issue that cmd/compile is only getting some of these correct because escape analysis doesn't understand //go:linkname is still present, but at least this addresses the fragility aspect. Updates #15283. Change-Id: I546aee1899d098b2e3de45e9b33c3ca22de485f8 Reviewed-on: https://go-review.googlesource.com/c/go/+/172420 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>