1
0
mirror of https://github.com/golang/go synced 2024-09-29 20:14:29 -06:00
go/test/fixedbugs/issue41635.go
Alberto Donizetti e572218d12 cmd/compile: fix escape reason for MAKESLICE with no cap
When explaining why the slice from a make() call escapes for the -m -m
message, we print "non-const size" if any one of Isconst(n.Left) and
Isconst(n.Right) return false; but for OMAKESLICE nodes with no cap,
n.Right is nil, so Isconst(n.Right, CTINT) will be always false.

Only call Isconst on n.Right if it's not nil.

Fixes #41635

Change-Id: I8729801a9b234b68ae40adad64d66fa7653adf09
Reviewed-on: https://go-review.googlesource.com/c/go/+/257641
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Keith Randall <khr@golang.org>
Trust: Alberto Donizetti <alb.donizetti@gmail.com>
2020-09-28 06:38:58 +00:00

19 lines
504 B
Go

//errorcheck -0 -m -m
// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package p
func f() { // ERROR ""
b1 := make([]byte, 1<<17) // ERROR "too large for stack" ""
b2 := make([]byte, 100, 1<<17) // ERROR "too large for stack" ""
n, m := 100, 200
b1 = make([]byte, n) // ERROR "non-constant size" ""
b2 = make([]byte, 100, m) // ERROR "non-constant size" ""
_, _ = b1, b2
}