Initial commit: Go 1.23 release state
This commit is contained in:
51
test/fixedbugs/issue19137.go
Normal file
51
test/fixedbugs/issue19137.go
Normal file
@@ -0,0 +1,51 @@
|
||||
// compile
|
||||
|
||||
// Copyright 2017 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 19137: folding address into load/store causes
|
||||
// odd offset on ARM64.
|
||||
|
||||
package p
|
||||
|
||||
type T struct {
|
||||
p *int
|
||||
a [2]byte
|
||||
b [6]byte // not 4-byte aligned
|
||||
}
|
||||
|
||||
func f(b [6]byte) T {
|
||||
var x [1000]int // a large stack frame
|
||||
_ = x
|
||||
return T{b: b}
|
||||
}
|
||||
|
||||
// Arg symbol's base address may be not at an aligned offset to
|
||||
// SP. Folding arg's address into load/store may cause odd offset.
|
||||
func move(a, b [20]byte) [20]byte {
|
||||
var x [1000]int // a large stack frame
|
||||
_ = x
|
||||
return b // b is not 8-byte aligned to SP
|
||||
}
|
||||
func zero() ([20]byte, [20]byte) {
|
||||
var x [1000]int // a large stack frame
|
||||
_ = x
|
||||
return [20]byte{}, [20]byte{} // the second return value is not 8-byte aligned to SP
|
||||
}
|
||||
|
||||
// Issue 21992: unaligned offset between 256 and 504 and handled
|
||||
// incorrectly.
|
||||
type T2 struct {
|
||||
a [257]byte
|
||||
// fields below are not 8-, 4-, 2-byte aligned
|
||||
b [8]byte
|
||||
c [4]byte
|
||||
d [2]byte
|
||||
}
|
||||
|
||||
func f2(x *T2) {
|
||||
x.b = [8]byte{}
|
||||
x.c = [4]byte{}
|
||||
x.d = [2]byte{}
|
||||
}
|
||||
Reference in New Issue
Block a user