From: Josh Bleecher Snyder Date: Thu, 7 Jul 2016 23:21:53 +0000 (-0700) Subject: cmd/compile/internal/obj/x86: clean up "is leaf?" check X-Git-Tag: go1.8beta1~1643 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=307de6540a5e6e5c2353c410240bb0f98bab1624;p=gostls13.git cmd/compile/internal/obj/x86: clean up "is leaf?" check Minor code cleanup. No functional changes. Change-Id: I2e631b43b122174302a182a1a286c0f873851ce6 Reviewed-on: https://go-review.googlesource.com/24813 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- diff --git a/src/cmd/internal/obj/x86/obj6.go b/src/cmd/internal/obj/x86/obj6.go index 512342550b..5e432774a7 100644 --- a/src/cmd/internal/obj/x86/obj6.go +++ b/src/cmd/internal/obj/x86/obj6.go @@ -655,17 +655,24 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym) { // TODO(rsc): Remove 'p.Mode == 64 &&'. if p.Mode == 64 && autoffset < obj.StackSmall && p.From3Offset()&obj.NOSPLIT == 0 { + leaf := true + LeafSearch: for q := p; q != nil; q = q.Link { - if q.As == obj.ACALL { - goto noleaf - } - if (q.As == obj.ADUFFCOPY || q.As == obj.ADUFFZERO) && autoffset >= obj.StackSmall-8 { - goto noleaf + switch q.As { + case obj.ACALL: + leaf = false + break LeafSearch + case obj.ADUFFCOPY, obj.ADUFFZERO: + if autoffset >= obj.StackSmall-8 { + leaf = false + break LeafSearch + } } } - p.From3.Offset |= obj.NOSPLIT - noleaf: + if leaf { + p.From3.Offset |= obj.NOSPLIT + } } if p.From3Offset()&obj.NOSPLIT == 0 || p.From3Offset()&obj.WRAPPER != 0 {