From: Cuong Manh Le Date: Sat, 3 Jun 2023 01:33:51 +0000 (+0700) Subject: cmd/compile: allow ir.OMIN/ir.OMAX in mayCall X-Git-Tag: go1.21rc1~106 X-Git-Url: http://www.git.cypherpunks.ru/?a=commitdiff_plain;h=96d16803c2aae5407e99c2a1db79bb51d9e1c8da;p=gostls13.git cmd/compile: allow ir.OMIN/ir.OMAX in mayCall CL 496257 adds min/max builtins, which may appear as argument to a function call, so it will be tested by mayCall. But those ops are not handled by mayCall, causes the compiler crashes. Fixes #60582 Change-Id: I729f10bf62b4aad39ffcb1433f576e74d09fdd9a Reviewed-on: https://go-review.googlesource.com/c/go/+/500575 Reviewed-by: Keith Randall Reviewed-by: Dmitri Shuralyov Auto-Submit: Cuong Manh Le Reviewed-by: Keith Randall TryBot-Result: Gopher Robot Run-TryBot: Cuong Manh Le --- diff --git a/src/cmd/compile/internal/walk/walk.go b/src/cmd/compile/internal/walk/walk.go index f5a2f9b9ac..265066200c 100644 --- a/src/cmd/compile/internal/walk/walk.go +++ b/src/cmd/compile/internal/walk/walk.go @@ -340,7 +340,7 @@ func mayCall(n ir.Node) bool { case ir.OLITERAL, ir.ONIL, ir.ONAME, ir.OLINKSYMOFFSET, ir.OMETHEXPR, ir.OAND, ir.OANDNOT, ir.OLSH, ir.OOR, ir.ORSH, ir.OXOR, ir.OCOMPLEX, ir.OEFACE, ir.OADDR, ir.OBITNOT, ir.ONOT, ir.OPLUS, - ir.OCAP, ir.OIMAG, ir.OLEN, ir.OREAL, + ir.OCAP, ir.OIMAG, ir.OLEN, ir.OREAL, ir.OMIN, ir.OMAX, ir.OCONVNOP, ir.ODOT, ir.OCFUNC, ir.OIDATA, ir.OITAB, ir.OSPTR, ir.OBYTES2STRTMP, ir.OGETG, ir.OGETCALLERPC, ir.OGETCALLERSP, ir.OSLICEHEADER, ir.OSTRINGHEADER: diff --git a/test/fixedbugs/issue60582.go b/test/fixedbugs/issue60582.go new file mode 100644 index 0000000000..f698918098 --- /dev/null +++ b/test/fixedbugs/issue60582.go @@ -0,0 +1,15 @@ +// build + +// 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 main + +import "fmt" + +func main() { + a, b := 5, 7 + fmt.Println(min(a, b)) + fmt.Println(max(a, b)) +}