From bd92d52adb99082d377f422030f20592d2b9dba6 Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Tue, 12 Aug 2014 09:24:35 +1000 Subject: [PATCH] [release-branch.go1.3] go.tools/go/pointer: fix crash in constraint generation of ssa.Convert to a named unsafe.Pointer type. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ««« CL 106060046 / 2ced0a1d47e3 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 »»» TBR=rsc R=rsc CC=golang-codereviews https://golang.org/cl/127060043 --- 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 c218d58e..b3a4d754 100644 --- a/go/pointer/gen.go +++ b/go/pointer/gen.go @@ -431,7 +431,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 5439a39e..89623173 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() }