golang/go
cmd/compile: unnecessary bounds check when slicing after using `slices.Grow`
オープン
#73,145 opened on 2025/04/03
BugReportNeedsInvestigationPerformancecompiler/runtimehelp wanted
Repository metrics
- Stars
- (133,883 個のスター)
- PR merge metrics
- (30d に merged PR はありません)
説明
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.