]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: ensure register args come before on-stack args in schedule
authorKeith Randall <khr@golang.org>
Fri, 20 Jan 2023 18:36:19 +0000 (10:36 -0800)
committerGopher Robot <gobot@golang.org>
Fri, 20 Jan 2023 19:51:06 +0000 (19:51 +0000)
The register allocator doesn't like OpArg coming in between other
OpIntArg operations, as it doesn't put the spills in the right place
in that situation.

This is just a bug in the new scheduler, I didn't copy over the
proper score from the old scheduler correctly.

Change-Id: I3b4ee1754982fb360e99c5864b19e7408d60b5bc
Reviewed-on: https://go-review.googlesource.com/c/go/+/462858
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Keith Randall <khr@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/cmd/compile/internal/ssa/schedule.go

index a69e406df23308fc9a39aa487b300bec36eb057e..246376c76744f2d26b8aeb53127f7c91f7098334 100644 (file)
@@ -135,7 +135,7 @@ func schedule(f *Func) {
                                if b != f.Entry {
                                        f.Fatalf("%s appeared outside of entry block, b=%s", v.Op, b.String())
                                }
-                               score[v.ID] = ScoreArg
+                               score[v.ID] = ScorePhi
                        case v.Op == OpArg:
                                // We want all the args as early as possible, for better debugging.
                                score[v.ID] = ScoreArg