]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: change ir.IsAssignable -> ir.IsAddressable
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Thu, 24 Dec 2020 11:16:44 +0000 (18:16 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Thu, 24 Dec 2020 16:56:19 +0000 (16:56 +0000)
ir.IsAssignable does not include map index expression, so it should be
named ir.IsAddressable instead.

[git-generate]

cd src/cmd/compile/internal/ir
rf '
  mv IsAssignable IsAddressable
'

Change-Id: Ief6188e7b784ba9592d7b0cbec33b5f70d78f638
Reviewed-on: https://go-review.googlesource.com/c/go/+/279436
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/ir/expr.go
src/cmd/compile/internal/ssagen/ssa.go
src/cmd/compile/internal/typecheck/expr.go
src/cmd/compile/internal/typecheck/typecheck.go
src/cmd/compile/internal/walk/compare.go
src/cmd/compile/internal/walk/convert.go
src/cmd/compile/internal/walk/expr.go
src/cmd/compile/internal/walk/order.go

index 467596609028cd42a8c3f130c40768ddc1992b1e..a79b78fb45b5556879d76800ddfd0d0c295f8aca 100644 (file)
@@ -776,12 +776,12 @@ func IsZero(n Node) bool {
 }
 
 // lvalue etc
-func IsAssignable(n Node) bool {
+func IsAddressable(n Node) bool {
        switch n.Op() {
        case OINDEX:
                n := n.(*IndexExpr)
                if n.X.Type() != nil && n.X.Type().IsArray() {
-                       return IsAssignable(n.X)
+                       return IsAddressable(n.X)
                }
                if n.X.Type() != nil && n.X.Type().IsString() {
                        return false
@@ -792,7 +792,7 @@ func IsAssignable(n Node) bool {
 
        case ODOT:
                n := n.(*SelectorExpr)
-               return IsAssignable(n.X)
+               return IsAddressable(n.X)
 
        case ONAME:
                n := n.(*Name)
index cf683e578d278bd1e0d5014cdad83e4447b2b4cd..69e16964239d91a9280f86f7e3f05ea3503ff88a 100644 (file)
@@ -2736,7 +2736,7 @@ func (s *state) expr(n ir.Node) *ssa.Value {
                // SSA, then load just the selected field. This
                // prevents false memory dependencies in race/msan
                // instrumentation.
-               if ir.IsAssignable(n) && !s.canSSA(n) {
+               if ir.IsAddressable(n) && !s.canSSA(n) {
                        p := s.addr(n)
                        return s.load(n.Type(), p)
                }
index 6bbb68550e6ccd8738e7b4c87685c02233081bbc..879ae385c7b438ae5eade05ee6aaa5f1a8e52565 100644 (file)
@@ -842,7 +842,7 @@ func tcSlice(n *ir.SliceExpr) ir.Node {
                return n
        }
        if l.Type().IsArray() {
-               if !ir.IsAssignable(n.X) {
+               if !ir.IsAddressable(n.X) {
                        base.Errorf("invalid operation %v (slice of unaddressable value)", n)
                        n.SetType(nil)
                        return n
index bf43402d3dabe01676a54466a591f1b159d108e2..87daee123d4b0099aae235fc7e983751ef60c29d 100644 (file)
@@ -1638,7 +1638,7 @@ func nonexported(sym *types.Sym) bool {
 }
 
 func checklvalue(n ir.Node, verb string) {
-       if !ir.IsAssignable(n) {
+       if !ir.IsAddressable(n) {
                base.Errorf("cannot %s %v", verb, n)
        }
 }
@@ -1656,7 +1656,7 @@ func checkassign(stmt ir.Node, n ir.Node) {
                }
        }
 
-       if ir.IsAssignable(n) {
+       if ir.IsAddressable(n) {
                return
        }
        if n.Op() == ir.OINDEXMAP {
index 40b45d4dea2275cc0ecef6c935adf8cd07b88974..a4ea31bf55e691917e0565c358f622678208a977 100644 (file)
@@ -155,7 +155,7 @@ func walkCompare(n *ir.BinaryExpr, init *ir.Nodes) ir.Node {
        // Chose not to inline. Call equality function directly.
        if !inline {
                // eq algs take pointers; cmpl and cmpr must be addressable
-               if !ir.IsAssignable(cmpl) || !ir.IsAssignable(cmpr) {
+               if !ir.IsAddressable(cmpl) || !ir.IsAddressable(cmpr) {
                        base.Fatalf("arguments of comparison must be lvalues - %v %v", cmpl, cmpr)
                }
 
index fd954d611366d77f8bf44b4913a8e175456b8213..99abf306680d811fdc129eeae7e0654ac1bdb356 100644 (file)
@@ -178,7 +178,7 @@ func walkConvInterface(n *ir.ConvExpr, init *ir.Nodes) ir.Node {
                // with a non-interface, especially in a switch on interface value
                // with non-interface cases, is not visible to order.stmt, so we
                // have to fall back on allocating a temp here.
-               if !ir.IsAssignable(v) {
+               if !ir.IsAddressable(v) {
                        v = copyExpr(v, v.Type(), init)
                }
                v = typecheck.NodAddr(v)
index 658a579fdaccd934556a3a4bdb8744e317903daa..882e455749e7402541bb4630dd7d6bd14a0178b1 100644 (file)
@@ -429,7 +429,7 @@ func safeExpr(n ir.Node, init *ir.Nodes) ir.Node {
        }
 
        // make a copy; must not be used as an lvalue
-       if ir.IsAssignable(n) {
+       if ir.IsAddressable(n) {
                base.Fatalf("missing lvalue case in safeexpr: %v", n)
        }
        return cheapExpr(n, init)
index 1fcebf51949d7361266e25b8243e9269fd0d704e..ef95dc14c711d8731a7aa2c43ce09718a6dadfef 100644 (file)
@@ -235,7 +235,7 @@ func (o *orderState) safeExpr(n ir.Node) ir.Node {
 // because we emit explicit VARKILL instructions marking the end of those
 // temporaries' lifetimes.
 func isaddrokay(n ir.Node) bool {
-       return ir.IsAssignable(n) && (n.Op() != ir.ONAME || n.(*ir.Name).Class_ == ir.PEXTERN || ir.IsAutoTmp(n))
+       return ir.IsAddressable(n) && (n.Op() != ir.ONAME || n.(*ir.Name).Class_ == ir.PEXTERN || ir.IsAutoTmp(n))
 }
 
 // addrTemp ensures that n is okay to pass by address to runtime routines.