]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile/internal/ssa: OCHECKNIL is a statement, not an expression
authorKeith Randall <khr@golang.org>
Sat, 12 Sep 2015 21:06:44 +0000 (14:06 -0700)
committerKeith Randall <khr@golang.org>
Sat, 12 Sep 2015 21:30:46 +0000 (21:30 +0000)
Change-Id: I5a683f532a5a0b2bc862d80c871e8dc6721016fc
Reviewed-on: https://go-review.googlesource.com/14534
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/gc/ssa.go

index 7da49fc6f0476607be04bbbf452b25a12fe659f6..70350e0e2cf63f5cf80c14f9dfbebd1f1cdc6815 100644 (file)
@@ -772,6 +772,10 @@ func (s *state) stmt(n *Node) {
                b.AddEdgeTo(bNext)
                s.startBlock(bNext)
 
+       case OCHECKNIL:
+               p := s.expr(n.Left)
+               s.nilCheck(p)
+
        default:
                s.Unimplementedf("unhandled stmt %s", opnames[n.Op])
        }
@@ -1661,11 +1665,6 @@ func (s *state) expr(n *Node) *ssa.Value {
        case OADDR:
                return s.addr(n.Left)
 
-       case OCHECKNIL:
-               p := s.expr(n.Left)
-               s.nilCheck(p)
-               return p
-
        case OINDREG:
                if int(n.Reg) != Thearch.REGSP {
                        s.Unimplementedf("OINDREG of non-SP register %s in expr: %v", obj.Rconv(int(n.Reg)), n)