From adc1db23ee17078590d81fb2201a12212d539628 Mon Sep 17 00:00:00 2001 From: qmuntal Date: Tue, 31 Jan 2023 17:04:08 +0100 Subject: [PATCH] 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 --- src/cmd/internal/obj/x86/obj6.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) 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 } -- 2.50.0