| // compile -d=ssa/check/on |
| // Copyright 2020 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 36723: fail to compile on PPC64 when SSA check is on. |
| func F(p *T, i uintptr) int32 { |
| // load p.x[i] using unsafe, derived from runtime.pcdatastart |
| return *(*int32)(add(unsafe.Pointer(&p.d), unsafe.Sizeof(p.d)+i*unsafe.Sizeof(p.x[0]))) |
| func add(p unsafe.Pointer, x uintptr) unsafe.Pointer { |
| return unsafe.Pointer(uintptr(p) + x) |