mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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 <jorropo.pgm@gmail.com> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
9e25c2f6de
commit
b8468d8c4e
1 changed files with 8 additions and 12 deletions
|
|
@ -2640,6 +2640,13 @@ var mostNegativeDividend = map[Op]int64{
|
||||||
OpDiv64: -1 << 63,
|
OpDiv64: -1 << 63,
|
||||||
OpMod64: -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
|
// simplifyBlock simplifies some constant values in b and evaluates
|
||||||
// branches to non-uniquely dominated successors of b.
|
// branches to non-uniquely dominated successors of b.
|
||||||
func simplifyBlock(sdom SparseTree, ft *factsTable, b *Block) {
|
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 {
|
if b.Func.pass.debug > 0 {
|
||||||
b.Func.Warnl(v.Pos, "Proved %v shifts to zero", v.Op)
|
b.Func.Warnl(v.Pos, "Proved %v shifts to zero", v.Op)
|
||||||
}
|
}
|
||||||
switch bits {
|
v.reset(bytesizeToConst[bits/8])
|
||||||
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.AuxInt = 0
|
v.AuxInt = 0
|
||||||
break // Be sure not to fallthrough - this is no longer OpRsh.
|
break // Be sure not to fallthrough - this is no longer OpRsh.
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue