summaryrefslogtreecommitdiffstats
path: root/test/codegen/issue56440.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/codegen/issue56440.go')
-rw-r--r--test/codegen/issue56440.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/codegen/issue56440.go b/test/codegen/issue56440.go
new file mode 100644
index 0000000..c6c1e66
--- /dev/null
+++ b/test/codegen/issue56440.go
@@ -0,0 +1,34 @@
+// 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.
+
+// Check to make sure that we recognize when the length of an append
+// is constant. We check this by making sure that the constant length
+// is folded into a load offset.
+
+package p
+
+func f(x []int) int {
+ s := make([]int, 3)
+ s = append(s, 4, 5)
+ // amd64:`MOVQ\t40\(.*\),`
+ return x[len(s)]
+}
+
+func g(x []int, p *bool) int {
+ s := make([]int, 3)
+ for {
+ s = s[:3]
+ if cap(s) < 5 {
+ s = make([]int, 3, 5)
+ }
+ s = append(s, 4, 5)
+ if *p {
+ // amd64:`MOVQ\t40\(.*\),`
+ return x[len(s)]
+ }
+ }
+ return 0
+}