aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2023-01-20 10:36:19 -0800
committerGopher Robot <gobot@golang.org>2023-01-20 19:51:06 +0000
commitb08d5ee5e9c700a1267f0b883702766a19d89b2d (patch)
tree090ac57032055de2c1f8a766042c4d4554c11626 /src/cmd
parentf07910bd577f73b81e4f7117c7cfdf9cf7579028 (diff)
downloadgo-b08d5ee5e9c700a1267f0b883702766a19d89b2d.tar.xz
cmd/compile: ensure register args come before on-stack args in schedule
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>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/compile/internal/ssa/schedule.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/ssa/schedule.go b/src/cmd/compile/internal/ssa/schedule.go
index a69e406df2..246376c767 100644
--- a/src/cmd/compile/internal/ssa/schedule.go
+++ b/src/cmd/compile/internal/ssa/schedule.go
@@ -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