aboutsummaryrefslogtreecommitdiff
path: root/test/codegen
diff options
context:
space:
mode:
authorCuong Manh Le <cuong.manhle.vn@gmail.com>2022-05-02 00:25:16 +0700
committerCuong Manh Le <cuong.manhle.vn@gmail.com>2022-05-03 05:42:48 +0000
commit0668e3cb1a8407547f1b4e316748d3b898564f8e (patch)
tree7da75f0678f71ecf9d7332709aebdd138b7eb6fe /test/codegen
parentf771edd7f92a47c276d65fbd9619e16a786c6746 (diff)
downloadgo-0668e3cb1a8407547f1b4e316748d3b898564f8e.tar.xz
cmd/compile: support pointers to arrays in arrayClear
Fixes #52635 Change-Id: I85f182931e30292983ef86c55a0ab6e01282395c Reviewed-on: https://go-review.googlesource.com/c/go/+/403337 Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
Diffstat (limited to 'test/codegen')
-rw-r--r--test/codegen/issue52635.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/codegen/issue52635.go b/test/codegen/issue52635.go
new file mode 100644
index 0000000000..0e4d169081
--- /dev/null
+++ b/test/codegen/issue52635.go
@@ -0,0 +1,36 @@
+// asmcheck
+
+// Copyright 2022 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.
+
+// Test that optimized range memclr works with pointers to arrays.
+
+package codegen
+
+type T struct {
+ a *[10]int
+ b [10]int
+}
+
+func (t *T) f() {
+ // amd64:".*runtime.memclrNoHeapPointers"
+ for i := range t.a {
+ t.a[i] = 0
+ }
+
+ // amd64:".*runtime.memclrNoHeapPointers"
+ for i := range *t.a {
+ t.a[i] = 0
+ }
+
+ // amd64:".*runtime.memclrNoHeapPointers"
+ for i := range t.a {
+ (*t.a)[i] = 0
+ }
+
+ // amd64:".*runtime.memclrNoHeapPointers"
+ for i := range *t.a {
+ (*t.a)[i] = 0
+ }
+}