]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: avoid range over copy of array
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Fri, 1 Nov 2019 11:12:27 +0000 (18:12 +0700)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 6 Mar 2020 23:24:28 +0000 (23:24 +0000)
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 <cuong.manhle.vn@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/gc/escape.go
src/cmd/compile/internal/gc/iexport.go
src/cmd/compile/internal/gc/iimport.go
src/cmd/compile/internal/gc/main.go
src/cmd/compile/internal/gc/noder.go
src/cmd/compile/internal/gc/plive.go
src/cmd/compile/internal/gc/ssa.go
src/cmd/compile/internal/gc/universe.go

index 76c91ba2d2ff823a09dadf306e9f42793607a408..8edaf54a75a9b631c692a09640b8ce15473fd863 100644 (file)
@@ -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)
index 259b70a69f56a9e6d8da0bf23544eb52ab28643d..7ee0876e8b75fff3eedb05bd7f1d7870bf40e51a 100644 (file)
@@ -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)
                }
index 824648acb61a20981ae5190da35d8980b196a678..f99b70ae278c426f71b1f3829ea1cd897322cbfe 100644 (file)
@@ -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()
                }
index fad2bdfcd45980d1fadfa35f9d0da69116cd8ed5..18a210baa49f7082b32306924ab10b1e013082bd 100644 (file)
@@ -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
                }
index b6713ba685989194e9cad64f1a5cc7e5b4a0670b..b956a7d13c6fe97515dd7056fb15da766fb10193 100644 (file)
@@ -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)
                        }
index b3262018b4a1826838cf5bb149fdaa0eeb4bf130..f8f7de0a9511cd22780a8703ed838f6c2f662ea4 100644 (file)
@@ -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
                                }
index 34adeabae1fff699abb5e312eeed4b49367c2b00..ddd40010e56f36c8f51b41f8cfe3c6c48843609e 100644 (file)
@@ -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)
index 9f4e4d96802ad28f2632ad25ca854a6d65d15ef0..d1072997f198c15eb0f9479e52e28beed3948f6d 100644 (file)
@@ -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