Change-Id: Ie23b13142fd820d7071a348a8370175e58b76d64
Reviewed-on: https://go-review.googlesource.com/11878
Reviewed-by: Keith Randall <khr@golang.org>
return s.newValue2(ssa.OpLoad, n.Left.Type.Type, p, s.mem())
}
+ case OLEN:
+ switch {
+ case n.Left.Type.Bound < 0: // slice
+ return s.newValue1(ssa.OpSliceLen, s.config.Uintptr, s.expr(n.Left))
+ case n.Left.Type.IsString(): // string
+ return s.newValue1(ssa.OpStringLen, s.config.Uintptr, s.expr(n.Left))
+ default: // array
+ return s.constInt(s.config.Uintptr, n.Left.Type.Bound)
+ }
+
case OCALLFUNC:
static := n.Left.Op == ONAME && n.Left.Class == PFUNC