]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj: add FuncInfo SPWRITE flag for linux/loong64
authorGuoqi Chen <chenguoqi@loongson.cn>
Mon, 23 May 2022 00:32:35 +0000 (08:32 +0800)
committerGopher Robot <gobot@golang.org>
Tue, 24 May 2022 01:08:23 +0000 (01:08 +0000)
Co-authored-by: limeidan <limeidan@loongson.cn>
Change-Id: Iac4f706fc9ff1047f1fa02f7178ebfbe38ad1ec3
Reviewed-on: https://go-review.googlesource.com/c/go/+/407754
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: WANG Xuerui <git@xen0n.name>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/cmd/internal/obj/loong64/obj.go

index f8cc5f2ab3dd78a395a56ce1c34fe180a429cbfe..dc05e18c7d85d260200a71f435b1b5bbb3e43c7a 100644 (file)
@@ -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")
+                                       }
+                               }
+                       }
+               }
        }
 }