summaryrefslogtreecommitdiffstats
path: root/test/fixedbugs/issue36723.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/fixedbugs/issue36723.go')
-rw-r--r--test/fixedbugs/issue36723.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/fixedbugs/issue36723.go b/test/fixedbugs/issue36723.go
new file mode 100644
index 0000000..e748d9a
--- /dev/null
+++ b/test/fixedbugs/issue36723.go
@@ -0,0 +1,26 @@
+// 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.
+
+package p
+
+import "unsafe"
+
+type T struct {
+ a, b, c, d uint8
+ x [10]int32
+}
+
+func F(p *T, i uintptr) int32 {
+ // load p.x[i] using unsafe, derived from runtime.pcdatastart
+ _ = *p
+ 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)
+}