• Keith Randall's avatar
    cmd/compile: treat slice pointers as non-nil · 933e34ac
    Keith Randall authored
    var a []int = ...
    p := &a[0]
    _ = *p
    
    We don't need to nil check on the 3rd line. If the bounds check on the 2nd
    line passes, we know p is non-nil.
    
    We rely on the fact that any cap>0 slice has a non-nil pointer as its
    pointer to the backing array. This is true for all safely-constructed slices,
    and I don't see any reason why someone would violate this rule using unsafe.
    
    R=go1.13
    
    Fixes #30366
    
    Change-Id: I3ed764fcb72cfe1fbf963d8c1a82e24e3b6dead7
    Reviewed-on: https://go-review.googlesource.com/c/163740
    Run-TryBot: Keith Randall <khr@golang.org>
    Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
    933e34ac
slices.go 1.61 KB