mirror of
https://github.com/golang/go
synced 2024-11-23 22:30:05 -07:00
cmd/compile: recognize some OpRsh64Ux64 Values as non-negative
Proves IsSliceInBounds one additional time building std+cmd, at encoding/hex/hex.go:187:8. The code is: if numAvail := len(d.in) / 2; len(p) > numAvail { p = p[:numAvail] } Previously we were unable to prove that numAvail >= 0. Change-Id: Ie74e0aef809f9194c45e129ee3dae60bc3eae02f Reviewed-on: https://go-review.googlesource.com/109415 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Giovanni Bajo <rasky@develer.com>
This commit is contained in:
parent
31cfa7f2f2
commit
548e1f8936
@ -1068,6 +1068,10 @@ func isNonNegative(v *Value) bool {
|
||||
OpZeroExt8to64, OpZeroExt16to64, OpZeroExt32to64:
|
||||
return true
|
||||
|
||||
case OpRsh64Ux64:
|
||||
by := v.Args[1]
|
||||
return by.Op == OpConst64 && by.AuxInt > 0
|
||||
|
||||
case OpRsh64x64:
|
||||
return isNonNegative(v.Args[0])
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user