]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: use *ir.Name for Decl.X
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Tue, 29 Dec 2020 19:46:25 +0000 (02:46 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Wed, 30 Dec 2020 00:48:19 +0000 (00:48 +0000)
Passes toolstash -cmp.

Change-Id: I505577d067eda3512f6d78618fc0eff061a71e3c
Reviewed-on: https://go-review.googlesource.com/c/go/+/280732
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/escape/escape.go
src/cmd/compile/internal/inline/inl.go
src/cmd/compile/internal/ir/node_gen.go
src/cmd/compile/internal/ir/stmt.go
src/cmd/compile/internal/ssagen/ssa.go
src/cmd/compile/internal/typecheck/iexport.go
src/cmd/compile/internal/typecheck/typecheck.go
src/cmd/compile/internal/walk/order.go
src/cmd/compile/internal/walk/stmt.go
src/cmd/compile/internal/walk/walk.go

index ec99c86c06b620a805ec132c41da76ee13770b0b..b5b09beb5a8db59f5bae84d90f860041ee16063e 100644 (file)
@@ -316,7 +316,7 @@ func (e *escape) stmt(n ir.Node) {
                // Record loop depth at declaration.
                n := n.(*ir.Decl)
                if !ir.IsBlank(n.X) {
-                       e.dcl(n.X.(*ir.Name))
+                       e.dcl(n.X)
                }
 
        case ir.OLABEL:
index 126871b805522500659558727640244d57deec86..7584f6a19f867661dd1c5ddf38ed5e8a27baf4d1 100644 (file)
@@ -649,7 +649,7 @@ func inlParam(t *types.Field, as ir.Node, inlvars map[*ir.Name]ir.Node) ir.Node
        if inlvar == nil {
                base.Fatalf("missing inlvar for %v", n)
        }
-       as.PtrInit().Append(ir.NewDecl(base.Pos, ir.ODCL, inlvar))
+       as.PtrInit().Append(ir.NewDecl(base.Pos, ir.ODCL, inlvar.(*ir.Name)))
        inlvar.Name().Defn = as
        return inlvar
 }
@@ -771,14 +771,14 @@ func mkinlcall(n *ir.CallExpr, fn *ir.Func, maxCost int32, inlMap map[*ir.Func]b
 
                        if v.Byval() {
                                iv := typecheck.Expr(inlvar(v))
-                               ninit.Append(ir.NewDecl(base.Pos, ir.ODCL, iv))
+                               ninit.Append(ir.NewDecl(base.Pos, ir.ODCL, iv.(*ir.Name)))
                                ninit.Append(typecheck.Stmt(ir.NewAssignStmt(base.Pos, iv, o)))
                                inlvars[v] = iv
                        } else {
                                addr := typecheck.NewName(typecheck.Lookup("&" + v.Sym().Name))
                                addr.SetType(types.NewPtr(v.Type()))
                                ia := typecheck.Expr(inlvar(addr))
-                               ninit.Append(ir.NewDecl(base.Pos, ir.ODCL, ia))
+                               ninit.Append(ir.NewDecl(base.Pos, ir.ODCL, ia.(*ir.Name)))
                                ninit.Append(typecheck.Stmt(ir.NewAssignStmt(base.Pos, ia, typecheck.NodAddr(o))))
                                inlvars[addr] = ia
 
@@ -917,7 +917,7 @@ func mkinlcall(n *ir.CallExpr, fn *ir.Func, maxCost int32, inlMap map[*ir.Func]b
        if !delayretvars {
                // Zero the return parameters.
                for _, n := range retvars {
-                       ninit.Append(ir.NewDecl(base.Pos, ir.ODCL, n))
+                       ninit.Append(ir.NewDecl(base.Pos, ir.ODCL, n.(*ir.Name)))
                        ras := ir.NewAssignStmt(base.Pos, n, nil)
                        ninit.Append(typecheck.Stmt(ras))
                }
@@ -1139,7 +1139,7 @@ func (subst *inlsubst) node(n ir.Node) ir.Node {
 
                        if subst.delayretvars {
                                for _, n := range as.Lhs {
-                                       as.PtrInit().Append(ir.NewDecl(base.Pos, ir.ODCL, n))
+                                       as.PtrInit().Append(ir.NewDecl(base.Pos, ir.ODCL, n.(*ir.Name)))
                                        n.Name().Defn = as
                                }
                        }
index 4427d89f5c59c3aad1b323e4125182d8542e4caf..4c48e82d779a39e9d5b28ae38766136306a61b54 100644 (file)
@@ -381,11 +381,15 @@ func (n *Decl) copy() Node {
 }
 func (n *Decl) doChildren(do func(Node) error) error {
        var err error
-       err = maybeDo(n.X, err, do)
+       if n.X != nil {
+               err = maybeDo(n.X, err, do)
+       }
        return err
 }
 func (n *Decl) editChildren(edit func(Node) Node) {
-       n.X = maybeEdit(n.X, edit)
+       if n.X != nil {
+               n.X = edit(n.X).(*Name)
+       }
 }
 
 func (n *ForStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
index a1f5e5933f2e0eb0c299d393bdb79756d625cf44..4575dec260b2e389a52e87b0f2b124554b413d71 100644 (file)
@@ -13,10 +13,10 @@ import (
 // A Decl is a declaration of a const, type, or var. (A declared func is a Func.)
 type Decl struct {
        miniNode
-       X Node // the thing being declared
+       X *Name // the thing being declared
 }
 
-func NewDecl(pos src.XPos, op Op, x Node) *Decl {
+func NewDecl(pos src.XPos, op Op, x *Name) *Decl {
        n := &Decl{X: x}
        n.pos = pos
        switch op {
index 3c94ec4c9519e6c6597fb58837749915110f7e5b..ddf65eb20961f8fdf1a041d23147b7e0c8e9575a 100644 (file)
@@ -1242,7 +1242,7 @@ func (s *state) stmt(n ir.Node) {
 
        case ir.ODCL:
                n := n.(*ir.Decl)
-               if n.X.(*ir.Name).Class_ == ir.PAUTOHEAP {
+               if n.X.Class_ == ir.PAUTOHEAP {
                        s.Fatalf("DCL %v", n)
                }
 
index 489879b3b434544b9e3a48757078106129142aa8..aa16a54bb83b1f971c95de348dec3d043a59f8a8 100644 (file)
@@ -1067,7 +1067,7 @@ func (w *exportWriter) stmt(n ir.Node) {
                n := n.(*ir.Decl)
                w.op(ir.ODCL)
                w.pos(n.X.Pos())
-               w.localName(n.X.(*ir.Name))
+               w.localName(n.X)
                w.typ(n.X.Type())
 
        case ir.OAS:
index 335e1b53ce365fd60997a3b9370bcfa216e34c32..480d2de8e3295da45c939db137e39d8fdc452135 100644 (file)
@@ -1011,12 +1011,12 @@ func typecheck1(n ir.Node, top int) ir.Node {
 
        case ir.ODCLCONST:
                n := n.(*ir.Decl)
-               n.X = Expr(n.X)
+               n.X = Expr(n.X).(*ir.Name)
                return n
 
        case ir.ODCLTYPE:
                n := n.(*ir.Decl)
-               n.X = typecheck(n.X, ctxType)
+               n.X = typecheck(n.X, ctxType).(*ir.Name)
                types.CheckSize(n.X.Type())
                return n
        }
index 0dd76ccee9a9bc0980dba6dd3e8a169cd4f014ea..b3d2eaec17a34365757ffb9c2de1d8dae5c0ef33 100644 (file)
@@ -955,7 +955,7 @@ func (o *orderState) stmt(n ir.Node) {
                                                if len(init) > 0 && init[0].Op() == ir.ODCL && init[0].(*ir.Decl).X == n {
                                                        init = init[1:]
                                                }
-                                               dcl := typecheck.Stmt(ir.NewDecl(base.Pos, ir.ODCL, n))
+                                               dcl := typecheck.Stmt(ir.NewDecl(base.Pos, ir.ODCL, n.(*ir.Name)))
                                                ncas.PtrInit().Append(dcl)
                                        }
                                        tmp := o.newTemp(t, t.HasPointers())
index 3fe7e103aa30ac4235085966f9798a37792cb28f..f843d2c4faf32bc704735db48e91a5a8793ceb20 100644 (file)
@@ -176,7 +176,7 @@ func walkStmtList(s []ir.Node) {
 
 // walkDecl walks an ODCL node.
 func walkDecl(n *ir.Decl) ir.Node {
-       v := n.X.(*ir.Name)
+       v := n.X
        if v.Class_ == ir.PAUTOHEAP {
                if base.Flag.CompilingRuntime {
                        base.Errorf("%v escapes to heap, not allowed in runtime", v)
index bdc9a2ea6a44477d05ea545820f850c9a060e252..b6be949689e581671bd10819ef3a945f31ed2aae 100644 (file)
@@ -167,7 +167,7 @@ func paramstoheap(params *types.Type) []ir.Node {
                }
 
                if stackcopy := v.Name().Stackcopy; stackcopy != nil {
-                       nn = append(nn, walkStmt(ir.NewDecl(base.Pos, ir.ODCL, v)))
+                       nn = append(nn, walkStmt(ir.NewDecl(base.Pos, ir.ODCL, v.(*ir.Name))))
                        if stackcopy.Class_ == ir.PPARAM {
                                nn = append(nn, walkStmt(typecheck.Stmt(ir.NewAssignStmt(base.Pos, v, stackcopy))))
                        }