From 7e1028a9ffaf577bfa527385b96f9063ca9d2984 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 1 Nov 2019 18:12:27 +0700 Subject: [PATCH] cmd/compile: avoid range over copy of array MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Passes toostash-check. Slightly reduce compiler binary size: file before after Δ % compile 21087288 21070776 -16512 -0.078% total 131847020 131830508 -16512 -0.013% file before after Δ % cmd/compile/internal/gc.a 9007472 8999640 -7832 -0.087% total 127117794 127109962 -7832 -0.006% Change-Id: I4aadd68d0a7545770598bed9d3a4d05899b67b52 Reviewed-on: https://go-review.googlesource.com/c/go/+/205777 Run-TryBot: Cuong Manh Le TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/gc/escape.go | 2 +- src/cmd/compile/internal/gc/iexport.go | 2 +- src/cmd/compile/internal/gc/iimport.go | 2 +- src/cmd/compile/internal/gc/main.go | 4 ++-- src/cmd/compile/internal/gc/noder.go | 2 +- src/cmd/compile/internal/gc/plive.go | 2 +- src/cmd/compile/internal/gc/ssa.go | 2 +- src/cmd/compile/internal/gc/universe.go | 10 +++++----- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/cmd/compile/internal/gc/escape.go b/src/cmd/compile/internal/gc/escape.go index 76c91ba2d2..8edaf54a75 100644 --- a/src/cmd/compile/internal/gc/escape.go +++ b/src/cmd/compile/internal/gc/escape.go @@ -1371,7 +1371,7 @@ func (e *Escape) finish(fns []*Node) { fn.Esc = EscFuncTagged narg := 0 - for _, fs := range types.RecvsParams { + for _, fs := range &types.RecvsParams { for _, f := range fs(fn.Type).Fields().Slice() { narg++ f.Note = e.paramTag(fn, narg, f) diff --git a/src/cmd/compile/internal/gc/iexport.go b/src/cmd/compile/internal/gc/iexport.go index 259b70a69f..7ee0876e8b 100644 --- a/src/cmd/compile/internal/gc/iexport.go +++ b/src/cmd/compile/internal/gc/iexport.go @@ -954,7 +954,7 @@ func (w *exportWriter) funcExt(n *Node) { w.symIdx(n.Sym) // Escape analysis. - for _, fs := range types.RecvsParams { + for _, fs := range &types.RecvsParams { for _, f := range fs(n.Type).FieldSlice() { w.string(f.Note) } diff --git a/src/cmd/compile/internal/gc/iimport.go b/src/cmd/compile/internal/gc/iimport.go index 824648acb6..f99b70ae27 100644 --- a/src/cmd/compile/internal/gc/iimport.go +++ b/src/cmd/compile/internal/gc/iimport.go @@ -660,7 +660,7 @@ func (r *importReader) funcExt(n *Node) { r.symIdx(n.Sym) // Escape analysis. - for _, fs := range types.RecvsParams { + for _, fs := range &types.RecvsParams { for _, f := range fs(n.Type).FieldSlice() { f.Note = r.string() } diff --git a/src/cmd/compile/internal/gc/main.go b/src/cmd/compile/internal/gc/main.go index fad2bdfcd4..18a210baa4 100644 --- a/src/cmd/compile/internal/gc/main.go +++ b/src/cmd/compile/internal/gc/main.go @@ -1071,7 +1071,7 @@ func loadsys() { typecheckok = true typs := runtimeTypes() - for _, d := range runtimeDecls { + for _, d := range &runtimeDecls { sym := Runtimepkg.Lookup(d.name) typ := typs[d.typ] switch d.tag { @@ -1374,7 +1374,7 @@ var concurrentFlagOK = [256]bool{ } func concurrentBackendAllowed() bool { - for i, x := range Debug { + for i, x := range &Debug { if x != 0 && !concurrentFlagOK[i] { return false } diff --git a/src/cmd/compile/internal/gc/noder.go b/src/cmd/compile/internal/gc/noder.go index b6713ba685..b956a7d13c 100644 --- a/src/cmd/compile/internal/gc/noder.go +++ b/src/cmd/compile/internal/gc/noder.go @@ -646,7 +646,7 @@ func (p *noder) expr(expr syntax.Expr) *Node { } n := p.nod(expr, op, p.expr(expr.X), nil) var index [3]*Node - for i, x := range expr.Index { + for i, x := range &expr.Index { if x != nil { index[i] = p.expr(x) } diff --git a/src/cmd/compile/internal/gc/plive.go b/src/cmd/compile/internal/gc/plive.go index b3262018b4..f8f7de0a95 100644 --- a/src/cmd/compile/internal/gc/plive.go +++ b/src/cmd/compile/internal/gc/plive.go @@ -419,7 +419,7 @@ func (lv *Liveness) regEffects(v *ssa.Value) (uevar, kill liveRegMask) { if v.Type.Etype != types.TTUPLE { v.Fatalf("location pair %s has non-tuple type %v", loc, v.Type) } - for i, loc1 := range loc { + for i, loc1 := range &loc { if loc1 == nil { continue } diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 34adeabae1..ddd40010e5 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -3216,7 +3216,7 @@ func init() { var p4 []*sys.Arch var p8 []*sys.Arch var lwatomics []*sys.Arch - for _, a := range sys.Archs { + for _, a := range &sys.Archs { all = append(all, a) if a.PtrSize == 4 { p4 = append(p4, a) diff --git a/src/cmd/compile/internal/gc/universe.go b/src/cmd/compile/internal/gc/universe.go index 9f4e4d9680..d1072997f1 100644 --- a/src/cmd/compile/internal/gc/universe.go +++ b/src/cmd/compile/internal/gc/universe.go @@ -66,7 +66,7 @@ var builtinFuncs = [...]struct { // isBuiltinFuncName reports whether name matches a builtin function // name. func isBuiltinFuncName(name string) bool { - for _, fn := range builtinFuncs { + for _, fn := range &builtinFuncs { if fn.name == name { return true } @@ -92,7 +92,7 @@ func initUniverse() { // lexinit initializes known symbols and the basic types. func lexinit() { - for _, s := range basicTypes { + for _, s := range &basicTypes { etype := s.etype if int(etype) >= len(types.Types) { Fatalf("lexinit: %s bad etype", s.name) @@ -111,13 +111,13 @@ func lexinit() { asNode(s2.Def).Name = new(Name) } - for _, s := range builtinFuncs { + for _, s := range &builtinFuncs { s2 := builtinpkg.Lookup(s.name) s2.Def = asTypesNode(newname(s2)) asNode(s2.Def).SetSubOp(s.op) } - for _, s := range unsafeFuncs { + for _, s := range &unsafeFuncs { s2 := unsafepkg.Lookup(s.name) s2.Def = asTypesNode(newname(s2)) asNode(s2.Def).SetSubOp(s.op) @@ -402,7 +402,7 @@ func lexinit1() { dowidth(types.Runetype) // backend-dependent builtin types (e.g. int). - for _, s := range typedefs { + for _, s := range &typedefs { s1 := builtinpkg.Lookup(s.name) sameas := s.sameas32