Cherry Zhang 37a32a1833 cmd/compile: make sure address of offset(SP) is rematerializeable
An address of offset(SP) may point to the callee args area, and
may be used to move things into/out of the args/results. If an
address like that is spilled and picked up by the GC, it may hold
an arg/result live in the callee, which may not actually be live
(e.g. a result not initialized at function entry). Make sure
they are rematerializeable, so they are always short-lived and
never picked up by the GC.

This CL changes 386, PPC64, and Wasm. On AMD64 we already have
the rule (line 2159). On other architectures, we already have
similar rules like
(OffPtr [off] ptr:(SP)) => (MOVDaddr [int32(off)] ptr)
to avoid this problem. (Probably me in the past had run into
this...)

Fixes #42944.

Change-Id: Id2ec73ac08f8df1829a9a7ceb8f749d67fe86d1e
Reviewed-on: https://go-review.googlesource.com/c/go/+/275174
Trust: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2020-12-03 21:34:39 +00:00
..
2019-03-06 18:53:12 +00:00
2019-09-08 17:28:20 +00:00
2020-12-03 16:28:44 +00:00
2015-01-29 13:07:30 +00:00
2019-09-08 17:28:20 +00:00
2018-10-06 15:40:03 +00:00
2015-07-11 14:36:33 +00:00
2015-07-11 14:36:33 +00:00
2020-11-28 02:31:54 +00:00
2020-04-13 21:56:15 +00:00
2019-09-08 17:28:20 +00:00
2018-04-30 19:39:18 +00:00
2019-09-08 17:28:20 +00:00
2020-11-28 02:31:54 +00:00
2020-11-28 02:31:54 +00:00
2019-11-01 20:13:05 +00:00
2020-11-28 02:31:54 +00:00
2020-12-03 16:28:44 +00:00
2018-11-26 14:13:53 +00:00
2018-11-27 15:36:08 +00:00
2018-11-26 14:13:53 +00:00
2019-09-08 17:28:20 +00:00
2018-03-01 21:11:16 +00:00
2018-12-03 16:48:21 +00:00
2019-09-08 17:28:20 +00:00

The test directory contains tests of the Go tool chain and runtime. It includes black box tests, regression tests, and error output tests. They are run as part of all.bash.

To run just these tests, execute:

../bin/go run run.go

To run just tests from specified files in this directory, execute:

../bin/go run run.go -- file1.go file2.go ...

Standard library tests should be written as regular Go tests in the appropriate package.

The tool chain and runtime also have regular Go tests in their packages. The main reasons to add a new test to this directory are:

  • it is most naturally expressed using the test runner; or
  • it is also applicable to gccgo and other Go tool chains.