cmd/internal/obj/arm64: omit stack check for no-frame leafs
For leaf functions with zero-sized frames, there's no point in doing a
stack check, so omit it.
This aligns arm64 with other architectures.
Change-Id: I1fb483d62f1736af10c5110815d3f5a875a46d7f
Reviewed-on: https://go-review.googlesource.com/92037
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
diff --git a/src/cmd/internal/obj/arm64/obj7.go b/src/cmd/internal/obj/arm64/obj7.go
index 7092232..71cee60 100644
--- a/src/cmd/internal/obj/arm64/obj7.go
+++ b/src/cmd/internal/obj/arm64/obj7.go
@@ -552,6 +552,13 @@
c.cursym.Func.Text.Mark |= LEAF
}
+ if c.cursym.Func.Text.Mark&LEAF != 0 {
+ c.cursym.Set(obj.AttrLeaf, true)
+ if c.autosize == 0 {
+ break
+ }
+ }
+
if !p.From.Sym.NoSplit() {
p = c.stacksplit(p, c.autosize) // emit split check
}
@@ -560,12 +567,6 @@
if aoffset > 0xF0 {
aoffset = 0xF0
}
- if c.cursym.Func.Text.Mark&LEAF != 0 {
- c.cursym.Set(obj.AttrLeaf, true)
- if c.autosize == 0 {
- break
- }
- }
// Frame is non-empty. Make sure to save link register, even if
// it is a leaf function, so that traceback works.