1// compile -d=ssa/check/on 2 3// Copyright 2020 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Issue 36723: fail to compile on PPC64 when SSA check is on. 8 9package p 10 11import "unsafe" 12 13type T struct { 14 a, b, c, d uint8 15 x [10]int32 16} 17 18func F(p *T, i uintptr) int32 { 19 // load p.x[i] using unsafe, derived from runtime.pcdatastart 20 _ = *p 21 return *(*int32)(add(unsafe.Pointer(&p.d), unsafe.Sizeof(p.d)+i*unsafe.Sizeof(p.x[0]))) 22} 23 24func add(p unsafe.Pointer, x uintptr) unsafe.Pointer { 25 return unsafe.Pointer(uintptr(p) + x) 26} 27