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() }