internal/runtime/sys,math/bits: eliminate bounds checks on len8tab

The compiler cannot currently determine that the accesses to len8tab
are within bounds. Cast to uint8 to avoid unnecessary bounds checks.

Fixes #76166

Change-Id: I1fd930bba2b20d3998252c476308642e08ce00b4
Reviewed-on: https://go-review.googlesource.com/c/go/+/718040
Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Keith Randall <khr@golang.org>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
Auto-Submit: Joel Sing <joel@sing.id.au>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
Joel Sing 2025-11-06 01:05:29 +11:00 committed by Gopher Robot
parent 32f8d6486f
commit bc5ffe5c79
2 changed files with 4 additions and 4 deletions

View file

@ -109,7 +109,7 @@ func Len64(x uint64) (n int) {
x >>= 8
n += 8
}
return n + int(len8tab[x])
return n + int(len8tab[uint8(x)])
}
// --- OnesCount ---

View file

@ -317,7 +317,7 @@ func Len16(x uint16) (n int) {
x >>= 8
n = 8
}
return n + int(len8tab[x])
return n + int(len8tab[uint8(x)])
}
// Len32 returns the minimum number of bits required to represent x; the result is 0 for x == 0.
@ -330,7 +330,7 @@ func Len32(x uint32) (n int) {
x >>= 8
n += 8
}
return n + int(len8tab[x])
return n + int(len8tab[uint8(x)])
}
// Len64 returns the minimum number of bits required to represent x; the result is 0 for x == 0.
@ -347,7 +347,7 @@ func Len64(x uint64) (n int) {
x >>= 8
n += 8
}
return n + int(len8tab[x])
return n + int(len8tab[uint8(x)])
}
// --- Add with carry ---