mirror of
https://github.com/golang/go
synced 2024-09-29 19:34:38 -06:00
cmd/compile: avoid range over copy of array
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>
This commit is contained in:
parent
1d90e1a0ac
commit
7e1028a9ff
@ -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)
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user