]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: derive bounds on signed %N for N a power of 2
authorKeith Randall <khr@golang.org>
Fri, 25 Apr 2025 01:37:49 +0000 (18:37 -0700)
committerKeith Randall <khr@golang.org>
Mon, 19 May 2025 22:21:54 +0000 (15:21 -0700)
commit3baf53aec6c2209562495d4ac1dc035c2881f6eb
tree35b366aadd6d4ab4f62acd87f30f90d72249dede
parent498899e20549a9e30f7641fc3a3592f89a933a95
cmd/compile: derive bounds on signed %N for N a power of 2

-N+1 <= x % N <= N-1

This is useful for cases like:

func setBit(b []byte, i int) {
    b[i/8] |= 1<<(i%8)
}

The shift does not need protection against larger-than-7 cases.
(It does still need protection against <0 cases.)

Change-Id: Idf83101386af538548bfeb6e2928cea855610ce2
Reviewed-on: https://go-review.googlesource.com/c/go/+/672995
Reviewed-by: Jorropo <jorropo.pgm@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/cmd/compile/internal/ssa/prove.go
test/codegen/shift.go