From 48ef01051ae58265088ee87f3a408224d2cfaec3 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Wed, 3 Apr 2019 13:16:58 -0700 Subject: 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 TryBot-Result: Gobot Gobot Reviewed-by: Ilya Tocar --- test/codegen/stack.go | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test/codegen/stack.go') 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 +} -- cgit v1.3