mirror of https://github.com/golang/go.git
[release-branch.go1.22] 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 #65983
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>
(cherry picked from commit b8c76effd9)
Reviewed-on: https://go-review.googlesource.com/c/go/+/593876
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
parent
dfe4dbf8c0
commit
ceaf26ecce
|
|
@ -657,6 +657,9 @@ func NewPtr(elem *Type) *Type {
|
|||
if elem.HasShape() {
|
||||
t.SetHasShape(true)
|
||||
}
|
||||
if elem.Noalg() {
|
||||
t.SetNoalg(true)
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
@ -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()
|
||||
}
|
||||
|
|
@ -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