From: Josh Bleecher Snyder Date: Mon, 4 May 2015 22:01:29 +0000 (-0700) Subject: cmd/compile: don't generate algs for ... args X-Git-Tag: go1.7beta1~510 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b6b144bf97744ead3ac51fd1b5648d2e31a8de0e;p=gostls13.git cmd/compile: don't generate algs for ... args Note that this is only safe because the compiler generates multiple distinct gc.Types. If we switch to having canonical gc.Types, then this will need to be updated to handle the case in which the user uses both map[[n]T]S and also calls a function f(...T) with n arguments. In that case, the runtime needs algs for [n]T, but this could mark the sole [n]T type as Noalg. This is a general problem with having a single bool to represent whether alg generation is needed for a type. Cuts 17k off cmd/go and 13k off golang.org/x/tools/cmd/godoc, approx 0.14% and 0.07% respectively. For #6853 and #9930 Change-Id: Iccb6b9fd88ade5497d7090528a903816d340bf0a Reviewed-on: https://go-review.googlesource.com/19770 Reviewed-by: David Crawshaw Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/compile/internal/gc/walk.go b/src/cmd/compile/internal/gc/walk.go index 7c4d74c8c3..7e160bdd94 100644 --- a/src/cmd/compile/internal/gc/walk.go +++ b/src/cmd/compile/internal/gc/walk.go @@ -1739,6 +1739,7 @@ func mkdotargslice(lr0, nn []*Node, l *Field, fp int, init *Nodes, ddd *Node) [] } tslice := typSlice(l.Type.Elem()) + tslice.Noalg = true var n *Node if len(lr0) == 0 {