From: qmuntal Date: Tue, 31 Jan 2023 16:04:08 +0000 (+0100) Subject: cmd/internal/obj/x86: use mov instead of lea to load the frame pointer X-Git-Tag: go1.21rc1~1709 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=adc1db23ee17078590d81fb2201a12212d539628;p=gostls13.git cmd/internal/obj/x86: use mov instead of lea to load the frame pointer This CL instructs the Go x86 compiler to load the frame pointer address using a MOV instead of a LEA instruction, being MOV 1 byte shorter: Before 55 PUSHQ BP 48 8d 2c 24 LEAQ 0(SP), BP After 55 PUSHQ BP 48 89 e5 MOVQ SP, BP This reduces the size of the Go toolchain ~0.06%. Updates #6853 Change-Id: I5557cf34c47e871d264ba0deda9b78338681a12c Reviewed-on: https://go-review.googlesource.com/c/go/+/463845 Auto-Submit: Keith Randall Reviewed-by: Keith Randall Reviewed-by: Keith Randall Run-TryBot: Quim Muntal Reviewed-by: Cherry Mui TryBot-Result: Gopher Robot --- diff --git a/src/cmd/internal/obj/x86/obj6.go b/src/cmd/internal/obj/x86/obj6.go index 33c02d59e8..79c584f4e2 100644 --- a/src/cmd/internal/obj/x86/obj6.go +++ b/src/cmd/internal/obj/x86/obj6.go @@ -695,11 +695,9 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { // Move current frame to BP p = obj.Appendp(p, newprog) - p.As = ALEAQ - p.From.Type = obj.TYPE_MEM + p.As = AMOVQ + p.From.Type = obj.TYPE_REG p.From.Reg = REG_SP - p.From.Scale = 1 - p.From.Offset = 0 p.To.Type = obj.TYPE_REG p.To.Reg = REG_BP }