From: Austin Clements Date: Thu, 25 Jan 2018 18:31:03 +0000 (-0500) Subject: cmd/internal/obj/arm64: omit stack check for no-frame leafs X-Git-Tag: go1.11beta1~1746 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=495174302f12eafa9f8793751a5208395b969fd6;p=gostls13.git 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 --- 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.