]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: remove regabi magic names
authorCherry Mui <cherryyz@google.com>
Fri, 18 Mar 2022 21:02:52 +0000 (17:02 -0400)
committerCherry Mui <cherryyz@google.com>
Mon, 21 Mar 2022 14:46:56 +0000 (14:46 +0000)
When developing register ABI, for early testing the compiler
recognized a few magic names to trigger enabling register ABI.
After the development it is disabled (changed to a name that
cannot be spelled in the source code). Later in the development of
register ABI for ARM64 and PPC64, I don't think the magic names
were used. I think they can now be removed.

Keep the magic pragma for now in case it helps development.

Change-Id: Icbc34e2786a80fd8fffe4a464c569dc03a54cd09
Reviewed-on: https://go-review.googlesource.com/c/go/+/393877
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/ssagen/ssa.go

index 60747d93ca9c15548d05fc4f016c8192fa5d52a6..a214a1e8f96fcb620091aae7009c1bf086ec665d 100644 (file)
@@ -224,11 +224,6 @@ func AbiForBodylessFuncStackMap(fn *ir.Func) *abi.ABIConfig {
        return ssaConfig.ABI0.Copy() // No idea what races will result, be safe
 }
 
-// These are disabled but remain ready for use in case they are needed for the next regabi port.
-// TODO if they are not needed for 1.18 / next register abi port, delete them.
-const magicNameDotSuffix = ".*disabled*MagicMethodNameForTestingRegisterABI"
-const magicLastTypeName = "*disabled*MagicLastTypeNameForTestingRegisterABI"
-
 // abiForFunc implements ABI policy for a function, but does not return a copy of the ABI.
 // Passing a nil function returns the default ABI based on experiment configuration.
 func abiForFunc(fn *ir.Func, abi0, abi1 *abi.ABIConfig) *abi.ABIConfig {
@@ -251,36 +246,13 @@ func abiForFunc(fn *ir.Func, abi0, abi1 *abi.ABIConfig) *abi.ABIConfig {
 
        a := abi0
        if fn != nil {
-               name := ir.FuncName(fn)
-               magicName := strings.HasSuffix(name, magicNameDotSuffix)
                if fn.Pragma&ir.RegisterParams != 0 { // TODO(register args) remove after register abi is working
-                       if strings.Contains(name, ".") {
-                               if !magicName {
-                                       base.ErrorfAt(fn.Pos(), "Calls to //go:registerparams method %s won't work, remove the pragma from the declaration.", name)
-                               }
-                       }
-                       a = abi1
-               } else if magicName {
-                       if base.FmtPos(fn.Pos()) == "<autogenerated>:1" {
-                               // no way to put a pragma here, and it will error out in the real source code if they did not do it there.
-                               a = abi1
-                       } else {
-                               base.ErrorfAt(fn.Pos(), "Methods with magic name %s (method %s) must also specify //go:registerparams", magicNameDotSuffix[1:], name)
-                       }
-               }
-               if regAbiForFuncType(fn.Type().FuncType()) {
-                       // fmt.Printf("Saw magic last type name for function %s\n", name)
                        a = abi1
                }
        }
        return a
 }
 
-func regAbiForFuncType(ft *types.Func) bool {
-       np := ft.Params.NumFields()
-       return np > 0 && strings.Contains(ft.Params.FieldType(np-1).String(), magicLastTypeName)
-}
-
 // dvarint writes a varint v to the funcdata in symbol x and returns the new offset
 func dvarint(x *obj.LSym, off int, v int64) int {
        if v < 0 || v > 1e9 {
@@ -4950,24 +4922,6 @@ func (s *state) call(n *ir.CallExpr, k callKind, returnResultAddr bool) *ssa.Val
 
        callABI := s.f.ABIDefault
 
-       if !buildcfg.Experiment.RegabiArgs {
-               var magicFnNameSym *types.Sym
-               if fn.Name() != nil {
-                       magicFnNameSym = fn.Name().Sym()
-                       ss := magicFnNameSym.Name
-                       if strings.HasSuffix(ss, magicNameDotSuffix) {
-                               callABI = s.f.ABI1
-                       }
-               }
-               if magicFnNameSym == nil && n.Op() == ir.OCALLINTER {
-                       magicFnNameSym = fn.(*ir.SelectorExpr).Sym()
-                       ss := magicFnNameSym.Name
-                       if strings.HasSuffix(ss, magicNameDotSuffix[1:]) {
-                               callABI = s.f.ABI1
-                       }
-               }
-       }
-
        if k != callNormal && k != callTail && (len(n.Args) != 0 || n.Op() == ir.OCALLINTER || n.X.Type().NumResults() != 0) {
                s.Fatalf("go/defer call with arguments: %v", n)
        }
@@ -5016,13 +4970,6 @@ func (s *state) call(n *ir.CallExpr, k callKind, returnResultAddr bool) *ssa.Val
                }
        }
 
-       if !buildcfg.Experiment.RegabiArgs {
-               if regAbiForFuncType(n.X.Type().FuncType()) {
-                       // Magic last type in input args to call
-                       callABI = s.f.ABI1
-               }
-       }
-
        params := callABI.ABIAnalyze(n.X.Type(), false /* Do not set (register) nNames from caller side -- can cause races. */)
        types.CalcSize(fn.Type())
        stksize := params.ArgWidth() // includes receiver, args, and results