]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: make prove use non-equality in subtraction for a stronger bound
authorJonah Uellenberg <JonahUellenberg@gmail.com>
Thu, 29 Jan 2026 19:45:27 +0000 (19:45 +0000)
committerGopher Robot <gobot@golang.org>
Thu, 29 Jan 2026 22:08:19 +0000 (14:08 -0800)
commit14a4cb13e389d8dbc1ba3ba0097e208f1436a22a
treecc5cc4779a33f574f50b52e80571590c7ca324b2
parentee7a2119ac17ea2a6bbf12b4c8001bf39c388166
cmd/compile: make prove use non-equality in subtraction for a stronger bound

Given:
  s := /* slice */
  k := /* proved valid index in s (0 <= k < len(s)) */
  v := s[k:]

len(v) >= 1, so v[0] needs no bounds check. However, for
len(v) = len(s) - k, we only checked if len(s) >= k and so could only
prove len(v) >= 0, thus the bounds check wasn't removed.

As far as I can tell these checks were commented out for performance,
but after benchmarking prove I see no difference.

Fixes: #76429
Change-Id: I39ba2a18cbabc0559924d4d226dcb99dbe9a06ed
GitHub-Last-Rev: 53f3344d261986cd021c8d7b8435ab89b5438b8f
GitHub-Pull-Request: golang/go#76609
Reviewed-on: https://go-review.googlesource.com/c/go/+/725100
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
src/cmd/compile/internal/ssa/prove.go
test/loopbce.go
test/prove.go