/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue19137.go
51 строка
1 KB
Cherry Zhang
cmd/internal/obj/arm64: fix handling of unaligned offset between 256 and 504
06 окт 2017, 01:28
06 окт 2017, 01:28
a92a77c
Код
Авторство
О чём код?
// 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{} }