cmd/compile: fix wrong argument of OpSelectN during expand_calls

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>
This commit is contained in:
Cuong Manh Le 2023-10-09 22:39:50 +07:00 committed by Gopher Robot
parent fce6be15cc
commit ad9e6edfdd
2 changed files with 22 additions and 0 deletions

View 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)

View file

@ -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 ""
}