]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: try and access last argument first in rulegen
authorMichael Munday <mike.munday@ibm.com>
Wed, 13 Mar 2019 10:32:48 +0000 (10:32 +0000)
committerMichael Munday <mike.munday@ibm.com>
Wed, 13 Mar 2019 15:11:37 +0000 (15:11 +0000)
commit04f1b65cc6ffbaa3693bbcb57ae26fb59466531b
tree08789a47f4032d5bb2ad8e5d2b0da8ea544bc356
parent5d4fa147c70b5ec2dfa812220c1ddc135e3b5381
cmd/compile: try and access last argument first in rulegen

This reduces the number of extra bounds check hints we need to
insert. For example, rather than producing:

_ = v.Args[2]
x := v.Args[0]
y := v.Args[1]
z := v.Args[2]

We now produce:

z := v.Args[2]
x := v.Args[0]
y := v.Args[1]

This gets rid of about 7000 lines of code from the rewrite rules.

Change-Id: I1291cf0f82e8d035a6d65bce7dee6cedee04cbcd
Reviewed-on: https://go-review.googlesource.com/c/go/+/167397
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
13 files changed:
src/cmd/compile/internal/ssa/gen/rulegen.go
src/cmd/compile/internal/ssa/rewrite386.go
src/cmd/compile/internal/ssa/rewriteAMD64.go
src/cmd/compile/internal/ssa/rewriteARM.go
src/cmd/compile/internal/ssa/rewriteARM64.go
src/cmd/compile/internal/ssa/rewriteMIPS.go
src/cmd/compile/internal/ssa/rewriteMIPS64.go
src/cmd/compile/internal/ssa/rewritePPC64.go
src/cmd/compile/internal/ssa/rewriteS390X.go
src/cmd/compile/internal/ssa/rewriteWasm.go
src/cmd/compile/internal/ssa/rewritedec.go
src/cmd/compile/internal/ssa/rewritedec64.go
src/cmd/compile/internal/ssa/rewritegeneric.go