From b8468d8c4ec14ce782c1a78bf67bc348d5894850 Mon Sep 17 00:00:00 2001 From: Jorropo Date: Sun, 26 Oct 2025 15:53:51 +0100 Subject: [PATCH] cmd/compile: introduce bytesizeToConst to cleanup switches in prove Change-Id: I32b45d9632a8131911cb9bd6eff075eb8312ccfd Reviewed-on: https://go-review.googlesource.com/c/go/+/715043 Auto-Submit: Jorropo Reviewed-by: Keith Randall Reviewed-by: Michael Knyszek LUCI-TryBot-Result: Go LUCI Reviewed-by: Keith Randall --- src/cmd/compile/internal/ssa/prove.go | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/cmd/compile/internal/ssa/prove.go b/src/cmd/compile/internal/ssa/prove.go index 168bb29984..e38dd4a838 100644 --- a/src/cmd/compile/internal/ssa/prove.go +++ b/src/cmd/compile/internal/ssa/prove.go @@ -2640,6 +2640,13 @@ var mostNegativeDividend = map[Op]int64{ OpDiv64: -1 << 63, OpMod64: -1 << 63} +var bytesizeToConst = [...]Op{ + 8 / 8: OpConst8, + 16 / 8: OpConst16, + 32 / 8: OpConst32, + 64 / 8: OpConst64, +} + // simplifyBlock simplifies some constant values in b and evaluates // branches to non-uniquely dominated successors of b. func simplifyBlock(sdom SparseTree, ft *factsTable, b *Block) { @@ -2702,18 +2709,7 @@ func simplifyBlock(sdom SparseTree, ft *factsTable, b *Block) { if b.Func.pass.debug > 0 { b.Func.Warnl(v.Pos, "Proved %v shifts to zero", v.Op) } - switch bits { - case 64: - v.reset(OpConst64) - case 32: - v.reset(OpConst32) - case 16: - v.reset(OpConst16) - case 8: - v.reset(OpConst8) - default: - panic("unexpected integer size") - } + v.reset(bytesizeToConst[bits/8]) v.AuxInt = 0 break // Be sure not to fallthrough - this is no longer OpRsh. } -- 2.52.0