mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00: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
1 changed files with 4 additions and 0 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue