]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/compile: fix wrong argument of OpSelectN during expand_calls
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Mon, 9 Oct 2023 15:39:50 +0000 (22:39 +0700)
committerGopher Robot <gobot@golang.org>
Mon, 9 Oct 2023 22:23:06 +0000 (22:23 +0000)
Fixes #63462

Change-Id: I5ddf831eab630e23156f8f27a079b4ca4bb3a261
Reviewed-on: https://go-review.googlesource.com/c/go/+/533795
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>

src/cmd/compile/internal/ssa/expand_calls.go
test/fixedbugs/issue63462.go [new file with mode: 0644]

index 29c180be34ef6cb605652346e85ef3a940e7fbd8..298e29ec56d6f98c0796b526c8d7fab3d751a40d 100644 (file)
@@ -142,6 +142,10 @@ func expandCalls(f *Func) {
                call := v.Args[0]
                aux := call.Aux.(*AuxCall)
                mem := x.memForCall[call.ID]
+               if mem == nil {
+                       mem = call.Block.NewValue1I(call.Pos, OpSelectN, types.TypeMem, int64(aux.abiInfo.OutRegistersUsed()), call)
+                       x.memForCall[call.ID] = mem
+               }
 
                i := v.AuxInt
                regs := aux.RegsOfResult(i)
diff --git a/test/fixedbugs/issue63462.go b/test/fixedbugs/issue63462.go
new file mode 100644 (file)
index 0000000..09b7e25
--- /dev/null
@@ -0,0 +1,18 @@
+// compile
+
+// Copyright 2023 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.
+
+package p
+
+func f() {
+       for b := "" < join([]string{}, "") && true; ; {
+               _ = b
+       }
+}
+
+//go:noinline
+func join(elems []string, sep string) string {
+       return ""
+}