diff options
author | Keith Randall <keithr@alum.mit.edu> | 2019-04-03 13:16:58 -0700 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2019-04-03 21:24:17 +0000 |
commit | 48ef01051ae58265088ee87f3a408224d2cfaec3 (patch) | |
tree | 87edc8caf281f3c3ec298a23d542461e37d515c0 /test/codegen/stack.go | |
parent | 60736733ec988864c7cd91115e2761d6f6635df2 (diff) | |
download | go-git-48ef01051ae58265088ee87f3a408224d2cfaec3.tar.gz |
cmd/compile: handle new panicindex/slice names in optimizations
These new calls should not prevent NOSPLIT promotion, like the old ones.
These new calls should not prevent racefuncenter/exit removal.
(The latter was already true, as the new calls are not yet lowered
to StaticCalls at the point where racefuncenter/exit removal is done.)
Add tests to make sure we don't regress (again).
Fixes #31219
Change-Id: I3fb6b17cdd32c425829f1e2498defa813a5a9ace
Reviewed-on: https://go-review.googlesource.com/c/go/+/170639
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ilya Tocar <ilya.tocar@intel.com>
Diffstat (limited to 'test/codegen/stack.go')
-rw-r--r-- | test/codegen/stack.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/test/codegen/stack.go b/test/codegen/stack.go index ed2c1ed959..ca37622286 100644 --- a/test/codegen/stack.go +++ b/test/codegen/stack.go @@ -98,3 +98,14 @@ func check_asmout(a, b int) int { // arm:`.*b\+4\(FP\)` return b } + +// Check that simple functions get promoted to nosplit, even when +// they might panic in various ways. See issue 31219. +// amd64:"TEXT\t.*NOSPLIT.*" +func MightPanic(a []int, i, j, k, s int) { + _ = a[i] // panicIndex + _ = a[i:j] // panicSlice + _ = a[i:j:k] // also panicSlice + _ = i << s // panicShift + _ = i / j // panicDivide +} |