]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: fix min/max builtin code generation
authorKeith Randall <khr@golang.org>
Fri, 23 Jun 2023 22:29:36 +0000 (15:29 -0700)
committerKeith Randall <khr@google.com>
Sat, 24 Jun 2023 05:24:25 +0000 (05:24 +0000)
commita031f4ef83edc132d5f49382bfef491161de2476
treea680e25cbad03234562dc4fed152903e7cf4e823
parentea927e560d80f34dfaaeee14418e55cc80220485
cmd/compile: fix min/max builtin code generation

Our large-function phi placement algorithm is incompatible with phi
opcodes already existing in the SSA representation. Instead, use simple
variable assignments and have the phi placement algorithm place the phis
we need for min/max.

Turns out the small-function phi placement algorithm doesn't have this
sensitivity, so this bug only occurs in large functions (>500 basic blocks).

Maybe we should document/check that no phis are present when we start
phi placement (regardless of size).  Leaving for a potential separate CL.

We should probably also fix the placement algorithm to handle existing
phis correctly.  But this CL is probably a lot smaller/safer than
messing with phi placement.

Fixes #60982

Change-Id: I59ba7f506c72b22bc1485099a335d96315ebef67
Reviewed-on: https://go-review.googlesource.com/c/go/+/505756
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/ssagen/ssa.go
test/fixedbugs/issue60982.go [new file with mode: 0644]