]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/compile: get rid of special case in scheduler for entry block
authorKeith Randall <khr@golang.org>
Fri, 14 Jul 2023 16:45:31 +0000 (09:45 -0700)
committerKeith Randall <khr@golang.org>
Wed, 26 Jul 2023 17:19:14 +0000 (17:19 +0000)
It isn't needed.

Fixes #61356

Change-Id: Ib466a3eac90c3ea57888cf40c294513033fc6118
Reviewed-on: https://go-review.googlesource.com/c/go/+/509856
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Keith Randall <khr@golang.org>

src/cmd/compile/internal/ssa/schedule.go
test/codegen/issue61356.go [new file with mode: 0644]

index 19b98cc4b83b6864462335c6632c5c4d1a56e2a8..13efb6ee7076a78c487a849da6e6e7976424e66e 100644 (file)
@@ -7,7 +7,6 @@ package ssa
 import (
        "cmd/compile/internal/base"
        "cmd/compile/internal/types"
-       "cmd/internal/src"
        "container/heap"
        "sort"
 )
@@ -65,10 +64,6 @@ func (h ValHeap) Less(i, j int) bool {
        }
 
        if x.Pos != y.Pos { // Favor in-order line stepping
-               if x.Block == x.Block.Func.Entry && x.Pos.IsStmt() != y.Pos.IsStmt() {
-                       // In the entry block, put statement-marked instructions earlier.
-                       return x.Pos.IsStmt() == src.PosIsStmt && y.Pos.IsStmt() != src.PosIsStmt
-               }
                return x.Pos.Before(y.Pos)
        }
        if x.Op != OpPhi {
diff --git a/test/codegen/issue61356.go b/test/codegen/issue61356.go
new file mode 100644 (file)
index 0000000..65753d5
--- /dev/null
@@ -0,0 +1,55 @@
+// asmcheck
+
+// 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.
+
+// Make sure this code doesn't generate spill/restore.
+
+package codegen
+
+func pack20(in *[20]uint64) uint64 {
+       var out uint64
+       out |= 4
+       // amd64:-`.*SP.*`
+       out |= in[0] << 4
+       // amd64:-`.*SP.*`
+       out |= in[1] << 7
+       // amd64:-`.*SP.*`
+       out |= in[2] << 10
+       // amd64:-`.*SP.*`
+       out |= in[3] << 13
+       // amd64:-`.*SP.*`
+       out |= in[4] << 16
+       // amd64:-`.*SP.*`
+       out |= in[5] << 19
+       // amd64:-`.*SP.*`
+       out |= in[6] << 22
+       // amd64:-`.*SP.*`
+       out |= in[7] << 25
+       // amd64:-`.*SP.*`
+       out |= in[8] << 28
+       // amd64:-`.*SP.*`
+       out |= in[9] << 31
+       // amd64:-`.*SP.*`
+       out |= in[10] << 34
+       // amd64:-`.*SP.*`
+       out |= in[11] << 37
+       // amd64:-`.*SP.*`
+       out |= in[12] << 40
+       // amd64:-`.*SP.*`
+       out |= in[13] << 43
+       // amd64:-`.*SP.*`
+       out |= in[14] << 46
+       // amd64:-`.*SP.*`
+       out |= in[15] << 49
+       // amd64:-`.*SP.*`
+       out |= in[16] << 52
+       // amd64:-`.*SP.*`
+       out |= in[17] << 55
+       // amd64:-`.*SP.*`
+       out |= in[18] << 58
+       // amd64:-`.*SP.*`
+       out |= in[19] << 61
+       return out
+}