1
0
mirror of https://github.com/golang/go synced 2024-10-05 16:41:21 -06:00

[dev.ssa] cmd/compile/internal/ssa: OCHECKNIL is a statement, not an expression

Change-Id: I5a683f532a5a0b2bc862d80c871e8dc6721016fc
Reviewed-on: https://go-review.googlesource.com/14534
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Keith Randall 2015-09-12 14:06:44 -07:00
parent 7e390724d2
commit 46ffb026b4

View 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)