mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
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:
parent
f4ab48cb83
commit
02dba5d1e6
@ -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
|
||||||
|
8
go/pointer/testdata/conv.go
vendored
8
go/pointer/testdata/conv.go
vendored
@ -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()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user