go.tools/go/pointer: fix crash in constraint generation of ssa.Convert to a named unsafe.Pointer type.

+ test.

Fixes golang/go#8231.

LGTM=gri
R=gri
CC=golang-codereviews
https://golang.org/cl/106060046
This commit is contained in:
Alan Donovan 2014-06-18 18:02:07 -04:00
parent f4ab48cb83
commit 02dba5d1e6
2 changed files with 9 additions and 1 deletions

View File

@ -434,7 +434,7 @@ func (a *analysis) genConv(conv *ssa.Convert, cgn *cgnode) {
case *types.Pointer: case *types.Pointer:
// *T -> unsafe.Pointer? // *T -> unsafe.Pointer?
if tDst == tUnsafePtr { if tDst.Underlying() == tUnsafePtr {
// ignore for now // ignore for now
// a.copy(res, a.valueNode(conv.X), 1) // a.copy(res, a.valueNode(conv.X), 1)
return return

View File

@ -49,9 +49,17 @@ func conv4() {
print(p) // @pointsto convert@c2p:13 print(p) // @pointsto convert@c2p:13
} }
// Regression test for b/8231.
func conv5() {
type P unsafe.Pointer
var i *struct{}
_ = P(i)
}
func main() { func main() {
conv1() conv1()
conv2() conv2()
conv3() conv3()
conv4() conv4()
conv5()
} }