golang/go
GitHub で見るcmd/compile: unnecessary bounds check when slicing after using `slices.Grow`
Open
#73,145 opened on 2025年4月3日
BugReportNeedsInvestigationPerformancecompiler/runtimehelp wanted
説明
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.