1
0
mirror of https://github.com/golang/go synced 2024-11-26 16:26:49 -07:00

test/nosplit: add more complicated recursion tests

Change-Id: I301ed8bcc93f31147d247e60a7aab8ed42421bbd
Reviewed-on: https://go-review.googlesource.com/c/go/+/398175
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Austin Clements 2022-04-04 15:41:08 -04:00
parent 120f445495
commit 7a06243205

View File

@ -70,6 +70,18 @@ start 0 call start
start 0 nosplit call start start 0 nosplit call start
REJECT REJECT
# Non-trivial recursion runs out of space.
start 0 call f1
f1 0 nosplit call f2
f2 0 nosplit call f1
REJECT
# Same but cycle starts below nosplit entry.
start 0 call f1
f1 0 nosplit call f2
f2 0 nosplit call f3
f3 0 nosplit call f2
REJECT
# Chains of ordinary functions okay. # Chains of ordinary functions okay.
start 0 call f1 start 0 call f1
f1 80 call f2 f1 80 call f2
@ -105,6 +117,14 @@ f8 16 nosplit call end
end 1000 end 1000
REJECT REJECT
# Two paths both go over the stack limit.
start 0 call f1
f1 80 nosplit call f2 call f3
f2 40 nosplit call f4
f3 96 nosplit
f4 40 nosplit
REJECT
# Test cases near the 128-byte limit. # Test cases near the 128-byte limit.
# Ordinary stack split frame is always okay. # Ordinary stack split frame is always okay.