From 02dba5d1e67b29f4ae8bdce7ecd42e8c0cf0ab7f Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Wed, 18 Jun 2014 18:02:07 -0400 Subject: [PATCH] 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 --- go/pointer/gen.go | 2 +- go/pointer/testdata/conv.go | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/go/pointer/gen.go b/go/pointer/gen.go index 65988fb370..8643545c97 100644 --- a/go/pointer/gen.go +++ b/go/pointer/gen.go @@ -434,7 +434,7 @@ func (a *analysis) genConv(conv *ssa.Convert, cgn *cgnode) { case *types.Pointer: // *T -> unsafe.Pointer? - if tDst == tUnsafePtr { + if tDst.Underlying() == tUnsafePtr { // ignore for now // a.copy(res, a.valueNode(conv.X), 1) return diff --git a/go/pointer/testdata/conv.go b/go/pointer/testdata/conv.go index 5439a39eb8..8962317300 100644 --- a/go/pointer/testdata/conv.go +++ b/go/pointer/testdata/conv.go @@ -49,9 +49,17 @@ func conv4() { print(p) // @pointsto convert@c2p:13 } +// Regression test for b/8231. +func conv5() { + type P unsafe.Pointer + var i *struct{} + _ = P(i) +} + func main() { conv1() conv2() conv3() conv4() + conv5() }