]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: assume unsafe pointer arithmetic generates non-nil results
authorKeith Randall <khr@google.com>
Tue, 30 Oct 2018 20:30:09 +0000 (13:30 -0700)
committerKeith Randall <khr@golang.org>
Wed, 14 Nov 2018 21:01:36 +0000 (21:01 +0000)
commit0c7762cd184649552309c82671bf81f89d215ff7
treedc33c01dad6596dd41f849a74fdccdea415a7e46
parenta063a2284af69d25d4367ff3e7c6da53f37bad03
cmd/compile: assume unsafe pointer arithmetic generates non-nil results

I've never seen a case where unsafe arithmetic is used to generate a nil.
(Something like var x uintptr; unsafe.Pointer(x - x).)
We can assume that if someone is doing arithmetic with pointers, the
result will be non-nil. Our unsafe rules already forbid this, although
we should be more explicit.

RELNOTE=It is invalid to convert a nil unsafe.Pointer to uintptr and back, with arithmetic.
(This was already invalid, but this statement has been added for clarification.)

Fixes #27180

Change-Id: I1880b7725a9fd99e4613799930fdad9aaa99e8f0
Reviewed-on: https://go-review.googlesource.com/c/146058
Reviewed-by: Austin Clements <austin@google.com>
src/cmd/compile/internal/ssa/nilcheck.go
src/unsafe/unsafe.go