From: Guoqi Chen Date: Mon, 23 May 2022 00:32:35 +0000 (+0800) Subject: cmd/internal/obj: add FuncInfo SPWRITE flag for linux/loong64 X-Git-Tag: go1.19beta1~134 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=654b03167f7d887d09a2d25bb3d1b4db9c8ae4f8;p=gostls13.git 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 --- 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") + } + } + } + } } }