]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: stop using ONONAME with Name
authorMatthew Dempsky <mdempsky@google.com>
Sat, 19 Dec 2020 04:14:45 +0000 (20:14 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Mon, 21 Dec 2020 19:42:21 +0000 (19:42 +0000)
This CL changes NewDeclNameAt to take an Op argument to set the Op up
front, and updates all callers to provide the appropriate Op. This
allows dropping the Name.SetOp method.

Passes buildall w/ toolstash -cmp.

Change-Id: I20e580f62d3c8a81223d1c162327c11b37bbf3f0
Reviewed-on: https://go-review.googlesource.com/c/go/+/279314
Trust: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/compile/internal/gc/dcl.go
src/cmd/compile/internal/gc/export.go
src/cmd/compile/internal/gc/iimport.go
src/cmd/compile/internal/gc/noder.go
src/cmd/compile/internal/gc/universe.go
src/cmd/compile/internal/ir/name.go

index 64b15077cdfaac4b29a4897e7c38870182be2569..04e3506dbacb656dbf871b1664a0dc1285869195 100644 (file)
@@ -141,7 +141,6 @@ func variter(vl []ir.Node, t ir.Ntype, el []ir.Node) []ir.Node {
                as2.PtrRlist().Set1(e)
                for _, v := range vl {
                        v := v.(*ir.Name)
-                       v.SetOp(ir.ONAME)
                        declare(v, dclcontext)
                        v.Ntype = t
                        v.Defn = as2
@@ -166,7 +165,6 @@ func variter(vl []ir.Node, t ir.Ntype, el []ir.Node) []ir.Node {
                        el = el[1:]
                }
 
-               v.SetOp(ir.ONAME)
                declare(v, dclcontext)
                v.Ntype = t
 
index 6ed4327a8fcc8cef9b2c6fdfe3db294bd47e7aef..8a8295537c39756a7ab5bc9b93d24a024dfe3d14 100644 (file)
@@ -82,9 +82,8 @@ func importsym(ipkg *types.Pkg, pos src.XPos, s *types.Sym, op ir.Op, ctxt ir.Cl
                base.Fatalf("importsym of symbol that already exists: %v", n)
        }
 
-       n := ir.NewDeclNameAt(pos, s)
-       n.SetOp(op) // TODO(mdempsky): Add as argument to NewDeclNameAt.
-       n.SetClass(ctxt)
+       n := ir.NewDeclNameAt(pos, op, s)
+       n.SetClass(ctxt) // TODO(mdempsky): Move this into NewDeclNameAt too?
        s.SetPkgDef(n)
        s.Importdef = ipkg
        return n
index 76f55a44e54ee40894bb30c8e57e89521d4a5a90..219ce4bdef271ba9c5ec891a68172de03d14e34a 100644 (file)
@@ -971,7 +971,7 @@ func (r *importReader) node() ir.Node {
        // statements
        case ir.ODCL:
                pos := r.pos()
-               lhs := ir.NewDeclNameAt(pos, r.ident())
+               lhs := ir.NewDeclNameAt(pos, ir.ONAME, r.ident())
                typ := ir.TypeNode(r.typ())
                return npos(pos, liststmt(variter([]ir.Node{lhs}, typ, nil))) // TODO(gri) avoid list creation
 
index ee01423833cb5102373190df730a6ff257071b25..b61f19ae2e9e13c38afd7dc44ded8a8951da18cf 100644 (file)
@@ -374,7 +374,7 @@ func (p *noder) importDecl(imp *syntax.ImportDecl) {
 }
 
 func (p *noder) varDecl(decl *syntax.VarDecl) []ir.Node {
-       names := p.declNames(decl.NameList)
+       names := p.declNames(ir.ONAME, decl.NameList)
        typ := p.typeExprOrNil(decl.Type)
 
        var exprs []ir.Node
@@ -425,7 +425,7 @@ func (p *noder) constDecl(decl *syntax.ConstDecl, cs *constState) []ir.Node {
                p.checkUnused(pragma)
        }
 
-       names := p.declNames(decl.NameList)
+       names := p.declNames(ir.OLITERAL, decl.NameList)
        typ := p.typeExprOrNil(decl.Type)
 
        var values []ir.Node
@@ -450,8 +450,6 @@ func (p *noder) constDecl(decl *syntax.ConstDecl, cs *constState) []ir.Node {
                if decl.Values == nil {
                        v = ir.DeepCopy(n.Pos(), v)
                }
-
-               n.SetOp(ir.OLITERAL)
                declare(n, dclcontext)
 
                n.Ntype = typ
@@ -471,8 +469,7 @@ func (p *noder) constDecl(decl *syntax.ConstDecl, cs *constState) []ir.Node {
 }
 
 func (p *noder) typeDecl(decl *syntax.TypeDecl) ir.Node {
-       n := p.declName(decl.Name)
-       n.SetOp(ir.OTYPE)
+       n := p.declName(ir.OTYPE, decl.Name)
        declare(n, dclcontext)
 
        // decl.Type may be nil but in that case we got a syntax error during parsing
@@ -495,16 +492,16 @@ func (p *noder) typeDecl(decl *syntax.TypeDecl) ir.Node {
        return nod
 }
 
-func (p *noder) declNames(names []*syntax.Name) []ir.Node {
+func (p *noder) declNames(op ir.Op, names []*syntax.Name) []ir.Node {
        nodes := make([]ir.Node, 0, len(names))
        for _, name := range names {
-               nodes = append(nodes, p.declName(name))
+               nodes = append(nodes, p.declName(op, name))
        }
        return nodes
 }
 
-func (p *noder) declName(name *syntax.Name) *ir.Name {
-       return ir.NewDeclNameAt(p.pos(name), p.name(name))
+func (p *noder) declName(op ir.Op, name *syntax.Name) *ir.Name {
+       return ir.NewDeclNameAt(p.pos(name), op, p.name(name))
 }
 
 func (p *noder) funcDecl(fun *syntax.FuncDecl) ir.Node {
index 21ddc78089de748d3e7ca4c17dfd97823837ccac..c988c575dcd6e004c8c58c79ec4d7a84380146d9 100644 (file)
@@ -97,8 +97,7 @@ func initUniverse() {
 
        defBasic := func(kind types.Kind, pkg *types.Pkg, name string) *types.Type {
                sym := pkg.Lookup(name)
-               n := ir.NewDeclNameAt(src.NoXPos, sym)
-               n.SetOp(ir.OTYPE)
+               n := ir.NewDeclNameAt(src.NoXPos, ir.OTYPE, sym)
                t := types.NewBasic(kind, n)
                n.SetType(t)
                sym.Def = n
@@ -134,8 +133,7 @@ func initUniverse() {
 
        // error type
        s := types.BuiltinPkg.Lookup("error")
-       n := ir.NewDeclNameAt(src.NoXPos, s)
-       n.SetOp(ir.OTYPE)
+       n := ir.NewDeclNameAt(src.NoXPos, ir.OTYPE, s)
        types.ErrorType = types.NewNamed(n)
        types.ErrorType.SetUnderlying(makeErrorInterface())
        n.SetType(types.ErrorType)
index f5f4280fd079e9741e3635779616a501afbb5c2a..9cf959b23d7924e1e4e2eec26569f5af863d1bed 100644 (file)
@@ -164,13 +164,19 @@ func NewIota(pos src.XPos, sym *types.Sym) *Name {
        return newNameAt(pos, OIOTA, sym)
 }
 
-// NewDeclNameAt returns a new ONONAME Node associated with symbol s at position pos.
+// NewDeclNameAt returns a new Name associated with symbol s at position pos.
 // The caller is responsible for setting Curfn.
-func NewDeclNameAt(pos src.XPos, sym *types.Sym) *Name {
+func NewDeclNameAt(pos src.XPos, op Op, sym *types.Sym) *Name {
        if sym == nil {
                base.Fatalf("NewDeclNameAt nil")
        }
-       return newNameAt(pos, ONONAME, sym)
+       switch op {
+       case ONAME, OTYPE, OLITERAL:
+               // ok
+       default:
+               base.Fatalf("NewDeclNameAt op %v", op)
+       }
+       return newNameAt(pos, op, sym)
 }
 
 // newNameAt is like NewNameAt but allows sym == nil.
@@ -207,18 +213,6 @@ func (*Name) CanBeNtype()    {}
 func (*Name) CanBeAnSSASym() {}
 func (*Name) CanBeAnSSAAux() {}
 
-func (n *Name) SetOp(op Op) {
-       if n.op != ONONAME {
-               base.Fatalf("%v already has Op %v", n, n.op)
-       }
-       switch op {
-       default:
-               panic(n.no("SetOp " + op.String()))
-       case OLITERAL, ONAME, OTYPE, OIOTA:
-               n.op = op
-       }
-}
-
 // Pragma returns the PragmaFlag for p, which must be for an OTYPE.
 func (n *Name) Pragma() PragmaFlag { return n.pragma }