From 654b03167f7d887d09a2d25bb3d1b4db9c8ae4f8 Mon Sep 17 00:00:00 2001 From: Guoqi Chen Date: Mon, 23 May 2022 08:32:35 +0800 Subject: [PATCH] cmd/internal/obj: add FuncInfo SPWRITE flag for linux/loong64 Co-authored-by: limeidan Change-Id: Iac4f706fc9ff1047f1fa02f7178ebfbe38ad1ec3 Reviewed-on: https://go-review.googlesource.com/c/go/+/407754 TryBot-Result: Gopher Robot Run-TryBot: Ian Lance Taylor Reviewed-by: WANG Xuerui Auto-Submit: Ian Lance Taylor Reviewed-by: Cherry Mui Reviewed-by: Ian Lance Taylor --- src/cmd/internal/obj/loong64/obj.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/cmd/internal/obj/loong64/obj.go b/src/cmd/internal/obj/loong64/obj.go index f8cc5f2ab3..dc05e18c7d 100644 --- a/src/cmd/internal/obj/loong64/obj.go +++ b/src/cmd/internal/obj/loong64/obj.go @@ -8,7 +8,7 @@ import ( "cmd/internal/obj" "cmd/internal/objabi" "cmd/internal/sys" - + "log" "math" ) @@ -460,6 +460,21 @@ func preprocess(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { p.From.Reg = REGSP } } + + if p.To.Type == obj.TYPE_REG && p.To.Reg == REGSP && p.Spadj == 0 { + f := c.cursym.Func() + if f.FuncFlag&objabi.FuncFlag_SPWRITE == 0 { + c.cursym.Func().FuncFlag |= objabi.FuncFlag_SPWRITE + if ctxt.Debugvlog || !ctxt.IsAsm { + ctxt.Logf("auto-SPWRITE: %s %v\n", c.cursym.Name, p) + if !ctxt.IsAsm { + ctxt.Diag("invalid auto-SPWRITE in non-assembly") + ctxt.DiagFlush() + log.Fatalf("bad SPWRITE") + } + } + } + } } } -- 2.50.0