diff options
| author | Jorropo <jorropo.pgm@gmail.com> | 2025-07-26 04:04:05 +0200 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-07-28 11:06:11 -0700 |
| commit | 4569255f8ce8ee744e34e44465444d6d58d349de (patch) | |
| tree | f20544815164535b969c68a894ef63e6d6b9c8ee /src | |
| parent | 94645d241320fe0617a4f158a4e1b64a643bb10f (diff) | |
| download | go-4569255f8ce8ee744e34e44465444d6d58d349de.tar.xz | |
cmd/compile: cleanup SelectN rules by indexing into args
Change-Id: I7b8e8cd88c4d6d562aa25df91593d35d331ef63c
Reviewed-on: https://go-review.googlesource.com/c/go/+/690595
Reviewed-by: Mark Freeman <mark@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/compile/internal/ssa/_gen/generic.rules | 4 | ||||
| -rw-r--r-- | src/cmd/compile/internal/ssa/rewritegeneric.go | 31 |
2 files changed, 7 insertions, 28 deletions
diff --git a/src/cmd/compile/internal/ssa/_gen/generic.rules b/src/cmd/compile/internal/ssa/_gen/generic.rules index 72d9677c5f..40966063d7 100644 --- a/src/cmd/compile/internal/ssa/_gen/generic.rules +++ b/src/cmd/compile/internal/ssa/_gen/generic.rules @@ -2057,9 +2057,7 @@ (Select1 (MakeTuple x y)) => y // for rewriting results of some late-expanded rewrites (below) -(SelectN [0] (MakeResult x ___)) => x -(SelectN [1] (MakeResult x y ___)) => y -(SelectN [2] (MakeResult x y z ___)) => z +(SelectN [n] m:(MakeResult ___)) => m.Args[n] // for late-expanded calls, recognize newobject and remove zeroing and nilchecks (Zero (SelectN [0] call:(StaticLECall _ _)) mem:(SelectN [1] call)) diff --git a/src/cmd/compile/internal/ssa/rewritegeneric.go b/src/cmd/compile/internal/ssa/rewritegeneric.go index bdde103a1f..f36e0b270f 100644 --- a/src/cmd/compile/internal/ssa/rewritegeneric.go +++ b/src/cmd/compile/internal/ssa/rewritegeneric.go @@ -29886,34 +29886,15 @@ func rewriteValuegeneric_OpSelectN(v *Value) bool { b := v.Block config := b.Func.Config typ := &b.Func.Config.Types - // match: (SelectN [0] (MakeResult x ___)) - // result: x - for { - if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpMakeResult || len(v_0.Args) < 1 { - break - } - x := v_0.Args[0] - v.copyOf(x) - return true - } - // match: (SelectN [1] (MakeResult x y ___)) - // result: y + // match: (SelectN [n] m:(MakeResult ___)) + // result: m.Args[n] for { - if auxIntToInt64(v.AuxInt) != 1 || v_0.Op != OpMakeResult || len(v_0.Args) < 2 { - break - } - y := v_0.Args[1] - v.copyOf(y) - return true - } - // match: (SelectN [2] (MakeResult x y z ___)) - // result: z - for { - if auxIntToInt64(v.AuxInt) != 2 || v_0.Op != OpMakeResult || len(v_0.Args) < 3 { + n := auxIntToInt64(v.AuxInt) + m := v_0 + if m.Op != OpMakeResult { break } - z := v_0.Args[2] - v.copyOf(z) + v.copyOf(m.Args[n]) return true } // match: (SelectN [0] call:(StaticCall {sym} sptr (Const64 [c]) mem)) |
