mirror of
https://github.com/golang/go
synced 2024-09-05 07:54:46 +00:00
![Rémy Oudompheng](/assets/img/avatar_default.png)
Revision 3ae4607a43ff introduced CONVNOP layers to fix type checking issues arising from comparisons. The added complexity made 8g run out of registers when compiling an equality function in go.net/ipv6. A similar issue occurred in test/sizeof.go on amd64p32 with 6g. Fixes #7405. LGTM=khr R=rsc, dave, iant, khr CC=golang-codereviews https://golang.org/cl/78100044
52 lines
638 B
Go
52 lines
638 B
Go
// compile
|
|
|
|
// Copyright 2014 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.
|
|
|
|
// Issue 7405: the equality function for struct with many
|
|
// embedded fields became more complex after fixing issue 7366,
|
|
// leading to out of registers on 386.
|
|
|
|
package p
|
|
|
|
type T1 struct {
|
|
T2
|
|
T3
|
|
T4
|
|
}
|
|
|
|
type T2 struct {
|
|
Conn
|
|
}
|
|
|
|
type T3 struct {
|
|
PacketConn
|
|
}
|
|
|
|
type T4 struct {
|
|
PacketConn
|
|
T5
|
|
}
|
|
|
|
type T5 struct {
|
|
x int
|
|
T6
|
|
}
|
|
|
|
type T6 struct {
|
|
y, z int
|
|
}
|
|
|
|
type Conn interface {
|
|
A()
|
|
}
|
|
|
|
type PacketConn interface {
|
|
B()
|
|
}
|
|
|
|
func F(a, b T1) bool {
|
|
return a == b
|
|
}
|