1
0
mirror of https://github.com/golang/go synced 2024-11-27 04:31:21 -07:00

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 <khr@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
qmuntal 2023-01-31 17:04:08 +01:00 committed by Gopher Robot
parent 0067d814b6
commit adc1db23ee

View File

@ -695,11 +695,9 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
// Move current frame to BP // Move current frame to BP
p = obj.Appendp(p, newprog) p = obj.Appendp(p, newprog)
p.As = ALEAQ p.As = AMOVQ
p.From.Type = obj.TYPE_MEM p.From.Type = obj.TYPE_REG
p.From.Reg = REG_SP p.From.Reg = REG_SP
p.From.Scale = 1
p.From.Offset = 0
p.To.Type = obj.TYPE_REG p.To.Type = obj.TYPE_REG
p.To.Reg = REG_BP p.To.Reg = REG_BP
} }