mirror of
https://github.com/golang/go
synced 2024-11-26 01:07:57 -07:00
cmd/compile: mark pointer to noalg type as noalg
When the compiler writes PtrToThis field of noalg type, it generates its pointer type. Mark them as noalg to prevent put them in typelinks. Fixes #65957 Change-Id: Icbc3b18bc866f9138c7648e42dd500a80326f72b Reviewed-on: https://go-review.googlesource.com/c/go/+/567335 Reviewed-by: Matthew Dempsky <mdempsky@google.com> Auto-Submit: Keith Randall <khr@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
parent
e8b6d0c9cd
commit
b8c76effd9
@ -657,6 +657,9 @@ func NewPtr(elem *Type) *Type {
|
||||
if elem.HasShape() {
|
||||
t.SetHasShape(true)
|
||||
}
|
||||
if elem.Noalg() {
|
||||
t.SetNoalg(true)
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
|
12
test/fixedbugs/issue65957.dir/a.go
Normal file
12
test/fixedbugs/issue65957.dir/a.go
Normal file
@ -0,0 +1,12 @@
|
||||
// Copyright 2024 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package a
|
||||
|
||||
var s any
|
||||
|
||||
//go:noinline
|
||||
func F() {
|
||||
s = new([4]int32)
|
||||
}
|
19
test/fixedbugs/issue65957.dir/main.go
Normal file
19
test/fixedbugs/issue65957.dir/main.go
Normal file
@ -0,0 +1,19 @@
|
||||
// Copyright 2024 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"./a"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
var s = []rune{0, 1, 2, 3}
|
||||
|
||||
func main() {
|
||||
m := map[any]int{}
|
||||
k := reflect.New(reflect.ArrayOf(4, reflect.TypeOf(int32(0)))).Elem().Interface()
|
||||
m[k] = 1
|
||||
a.F()
|
||||
}
|
7
test/fixedbugs/issue65957.go
Normal file
7
test/fixedbugs/issue65957.go
Normal file
@ -0,0 +1,7 @@
|
||||
// rundir
|
||||
|
||||
// Copyright 2024 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package ignored
|
Loading…
Reference in New Issue
Block a user