golang/go

cmd/compile: unnecessary bounds check when slicing after using `slices.Grow`

Aberta

#73.145 aberto em 3 de abr. de 2025

 (2 comentários) (1 reação) (0 responsável)Go (19.008 forks)batch import

Métricas do repositório

Stars
 (133.883 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

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.

Guia do colaborador