golang/go
Voir sur GitHubcmd/compile: unnecessary bounds check when slicing after using `slices.Grow`
Open
#73 145 ouverte le 3 avr. 2025
BugReportNeedsInvestigationPerformancecompiler/runtimehelp wanted
Métriques du dépôt
- Stars
- (133 883 stars)
- Métriques de merge PR
- (Aucune PR mergée en 30 j)
Description
Go version
go version go1.24.1 linux/amd64
Output of go env in your module/workspace:
-
What did you do?
package pkg
import "slices"
func Foo() {
var xs []int
xs = slices.Grow(xs, 4)[:len(xs)+4]
}
What did you see happen?
Slicing after growing inserts a check for the capacity and a conditional call to runtime.panicSliceAcap
What did you expect to see?
The compiler should be able to tell that we just guaranteed that the slice's capacity is at least len(xs)+4 and shouldn't insert another check.