From 495174302f12eafa9f8793751a5208395b969fd6 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 25 Jan 2018 13:31:03 -0500 Subject: [PATCH] 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 TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang --- src/cmd/internal/obj/arm64/obj7.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/cmd/internal/obj/arm64/obj7.go b/src/cmd/internal/obj/arm64/obj7.go index 709223223f..71cee60259 100644 --- a/src/cmd/internal/obj/arm64/obj7.go +++ b/src/cmd/internal/obj/arm64/obj7.go @@ -552,6 +552,13 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { 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 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { 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. -- 2.50.0