]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj/x86: use mov instead of lea to load the frame pointer
authorqmuntal <quimmuntal@gmail.com>
Tue, 31 Jan 2023 16:04:08 +0000 (17:04 +0100)
committerGopher Robot <gobot@golang.org>
Tue, 31 Jan 2023 17:38:45 +0000 (17:38 +0000)
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>

src/cmd/internal/obj/x86/obj6.go

index 33c02d59e822ceae30f7e8db5b34aabe5f21c7ce..79c584f4e27e87335a31970a4d76828ef2316351 100644 (file)
@@ -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
        }