Sometimes a value has multiple args, but they are the same dependency. Relax the regalloc heuristic for those. No measurable compile-time regression according to compilebench, maybe even a small improvement. name old time/op new time/op delta StdCmd 14.4s ± 1% 14.4s ± 1% -0.39% (p=0.101 n=11+11) compilecmp: linux/amd64: strconv strconv.formatBits 1199 -> 1189 (-0.83%) strconv.formatDecimal 637 -> 631 (-0.94%) strconv [cmd/compile] strconv.formatBits 1199 -> 1189 (-0.83%) strconv.formatDecimal 637 -> 631 (-0.94%) image image.NewGray16 286 -> 275 (-3.85%) image.NewAlpha16 286 -> 275 (-3.85%) regexp/syntax regexp/syntax.ranges.Less 150 -> 147 (-2.00%) regexp/syntax.(*compiler).rune 774 -> 773 (-0.13%) regexp/syntax.(*ranges).Swap 197 -> 180 (-8.63%) regexp/syntax.ranges.Swap 146 -> 134 (-8.22%) regexp/syntax.(*compiler).cap 440 -> 425 (-3.41%) regexp/syntax.(*compiler).nop 310 -> 297 (-4.19%) regexp/syntax.(*compiler).compile 5815 -> 5733 (-1.41%) regexp/syntax.(*ranges).Less 211 -> 197 (-6.64%) regexp/syntax [cmd/compile] regexp/syntax.(*compiler).compile 5815 -> 5733 (-1.41%) regexp/syntax.(*compiler).rune 774 -> 773 (-0.13%) regexp/syntax.(*compiler).cap 440 -> 425 (-3.41%) regexp/syntax.(*ranges).Less 211 -> 197 (-6.64%) regexp/syntax.ranges.Swap 146 -> 134 (-8.22%) regexp/syntax.(*ranges).Swap 197 -> 180 (-8.63%) regexp/syntax.(*compiler).nop 310 -> 297 (-4.19%) regexp/syntax.ranges.Less 150 -> 147 (-2.00%) crypto/elliptic crypto/elliptic.(*nistCurve[go.shape.*uint8]).pointFromAffine 1272 -> 1240 (-2.52%) image/gif image/gif.(*decoder).readColorTable 652 -> 646 (-0.92%) image/gif.(*encoder).colorTablesMatch 350 -> 349 (-0.29%) crypto/internal/cryptotest crypto/internal/cryptotest.testCipher.func3 1289 -> 1286 (-0.23%) internal/trace/internal/tracev1 internal/trace/internal/tracev1.(*parser).collectBatchesAndCPUSamples 1352 -> 1338 (-1.04%) internal/fuzz internal/fuzz.byteSliceDuplicateBytes 741 -> 718 (-3.10%) cmd/compile/internal/types cmd/compile/internal/types.CalcSize 3663 -> 3633 (-0.82%) cmd/compile/internal/rttype cmd/compile/internal/rttype.Init 2149 -> 2124 (-1.16%) cmd/link/internal/loadmacho cmd/link/internal/loadmacho.macholoadsym 1213 -> 1212 (-0.08%) cmd/compile/internal/rangefunc cmd/compile/internal/rangefunc.(*rewriter).checks 5207 -> 5175 (-0.61%) net/http net/http.(*http2SettingsFrame).Setting 155 -> 147 (-5.16%) cmd/compile/internal/rttype [cmd/compile] cmd/compile/internal/rttype.Init 2149 -> 2124 (-1.16%) cmd/compile/internal/rangefunc [cmd/compile] cmd/compile/internal/rangefunc.(*rewriter).checks 5207 -> 5175 (-0.61%) cmd/link/internal/ld cmd/link/internal/ld.pefips 3119 -> 3109 (-0.32%) cmd/vendor/rsc.io/markdown cmd/vendor/rsc.io/markdown.parseDash 593 -> 587 (-1.01%) cmd/compile/internal/ssa cmd/compile/internal/ssa.(*poset).setOrder 3442 -> 3416 (-0.76%) cmd/compile/internal/ssa.rewriteValuegeneric_OpMul16 2054 -> 2022 (-1.56%) cmd/compile/internal/ssa.rewriteValuegeneric_OpMul8 2054 -> 2022 (-1.56%) inserted cmd/compile/internal/ssa.tighten.deferwrap5 cmd/compile/internal/ssa [cmd/compile] cmd/compile/internal/ssa.rewriteValuegeneric_OpMul8 2054 -> 2022 (-1.56%) cmd/compile/internal/ssa.rewriteValuegeneric_OpMul16 2054 -> 2022 (-1.56%) cmd/compile/internal/ssa.tighten.deferwrap4 76 -> 67 (-11.84%) cmd/compile/internal/ssa.tighten 6746 -> 5082 (-24.67%) inserted cmd/compile/internal/ssa.tighten.deferwrap5 file before after Δ % strconv.s 49029 49020 -9 -0.018% strconv [cmd/compile].s 49029 49020 -9 -0.018% image.s 34963 34941 -22 -0.063% regexp/syntax.s 83017 82860 -157 -0.189% regexp/syntax [cmd/compile].s 83017 82860 -157 -0.189% crypto/elliptic.s 26848 26816 -32 -0.119% image/gif.s 22840 22833 -7 -0.031% crypto/internal/cryptotest.s 63834 63832 -2 -0.003% internal/trace/internal/tracev1.s 52995 52981 -14 -0.026% internal/trace.s 181396 181412 +16 +0.009% internal/fuzz.s 85526 85503 -23 -0.027% cmd/internal/obj/s390x.s 121651 121683 +32 +0.026% cmd/internal/obj/ppc64.s 139867 139871 +4 +0.003% cmd/compile/internal/types.s 71425 71395 -30 -0.042% cmd/internal/obj/ppc64 [cmd/compile].s 139952 139956 +4 +0.003% cmd/internal/obj/s390x [cmd/compile].s 121753 121785 +32 +0.026% cmd/compile/internal/rttype.s 10418 10393 -25 -0.240% cmd/link/internal/loadmacho.s 23270 23272 +2 +0.009% cmd/compile/internal/rangefunc.s 35050 35018 -32 -0.091% cmd/vendor/github.com/google/pprof/profile.s 148264 148273 +9 +0.006% net/http.s 612895 612910 +15 +0.002% cmd/compile/internal/rttype [cmd/compile].s 10397 10372 -25 -0.240% cmd/compile/internal/rangefunc [cmd/compile].s 35681 35649 -32 -0.090% net/http/cookiejar.s 28758 28761 +3 +0.010% cmd/compile/internal/reflectdata.s 86639 86644 +5 +0.006% cmd/compile/internal/reflectdata [cmd/compile].s 89725 89730 +5 +0.006% cmd/link/internal/ld.s 649596 649633 +37 +0.006% cmd/vendor/rsc.io/markdown.s 116731 116757 +26 +0.022% cmd/compile/internal/ssa.s 3574185 3574642 +457 +0.013% cmd/compile/internal/ssa [cmd/compile].s 3725364 3723715 -1649 -0.044% cmd/compile/internal/ssagen.s 415135 415155 +20 +0.005% total 36475376 36473818 -1558 -0.004% linux/arm64: go/printer go/printer.(*printer).expr1 7152 -> 7168 (+0.22%) fmt [cmd/compile] fmt.(*ss).advance 1712 -> 1696 (-0.93%) crypto/x509 crypto/x509.marshalCertificatePolicies.func1.2.(*Builder).AddASN1ObjectIdentifier.1 changed internal/fuzz internal/fuzz.minimizeBytes changed cmd/internal/obj/arm64 cmd/internal/obj/arm64.bitconEncode changed math/big [cmd/compile] math/big.(*Float).Int64 512 -> 528 (+3.12%) math/big.NewInt changed math/big.fmtE 720 -> 736 (+2.22%) math/big.basicSqr changed cmd/asm/internal/asm cmd/asm/internal/asm.(*Parser).asmText 1424 -> 1440 (+1.12%) go/constant [cmd/compile] go/constant.UnaryOp changed go/constant.BinaryOp changed crypto/tls crypto/tls.prf10 576 -> 560 (-2.78%) cmd/internal/obj/arm64 [cmd/compile] cmd/internal/obj/arm64.bitconEncode changed cmd/vendor/golang.org/x/term cmd/vendor/golang.org/x/term.(*Terminal).addKeyToLine changed cmd/compile/internal/ir cmd/compile/internal/ir.ConstOverflow changed cmd/vendor/github.com/google/pprof/internal/graph cmd/vendor/github.com/google/pprof/internal/graph.(*builder).addEdge changed cmd/compile/internal/ir [cmd/compile] cmd/compile/internal/ir.ConstOverflow changed cmd/compile/internal/rttype cmd/compile/internal/rttype.Init changed cmd/compile/internal/rttype [cmd/compile] cmd/compile/internal/rttype.Init changed cmd/compile/internal/abi [cmd/compile] cmd/compile/internal/abi.(*ABIParamAssignment).RegisterTypesAndOffsets 1344 -> 1328 (-1.19%) cmd/vendor/golang.org/x/tools/go/types/typeutil cmd/vendor/golang.org/x/tools/go/types/typeutil.hasher.hash changed cmd/vendor/github.com/ianlancetaylor/demangle cmd/vendor/github.com/ianlancetaylor/demangle.(*rustState).expandPunycode changed net/http/cookiejar net/http/cookiejar.adapt changed net/http/cookiejar.encode changed cmd/compile/internal/reflectdata cmd/compile/internal/reflectdata.OldMapType changed cmd/compile/internal/reflectdata [cmd/compile] cmd/compile/internal/reflectdata.OldMapType changed cmd/vendor/github.com/google/pprof/internal/report cmd/vendor/github.com/google/pprof/internal/report.(*Report).newTrimmedGraph 2336 -> 2368 (+1.37%) cmd/link/internal/ld cmd/link/internal/ld.(*relocSymState).relocsym changed cmd/vendor/rsc.io/markdown cmd/vendor/rsc.io/markdown.parseDash changed cmd/vendor/rsc.io/markdown.parseLinkRefDef changed cmd/trace main.(*stackMap).profile 912 -> 880 (-3.51%) cmd/vendor/golang.org/x/tools/go/analysis/passes/tests cmd/vendor/golang.org/x/tools/go/analysis/passes/tests.checkExampleOutput 832 -> 816 (-1.92%) cmd/compile/internal/ssa cmd/compile/internal/ssa.shouldElimIfElse changed cmd/compile/internal/ssa.storeOrder changed cmd/compile/internal/ssa.elimIfElse changed cmd/compile/internal/ssa.tighten 3408 -> 3456 (+1.41%) cmd/compile/internal/ssa [cmd/compile] cmd/compile/internal/ssa.storeOrder changed cmd/compile/internal/ssa.elimIfElse changed cmd/compile/internal/ssa.shouldElimIfElse changed cmd/compile/internal/ssa.tighten 4960 -> 4976 (+0.32%) cmd/compile/internal/ssa.branchelim changed file before after Δ % runtime.s 624064 624032 -32 -0.005% runtime [cmd/compile].s 679456 679424 -32 -0.005% strconv.s 48528 48560 +32 +0.066% strconv [cmd/compile].s 48528 48560 +32 +0.066% index/suffixarray.s 41808 41856 +48 +0.115% fmt.s 72272 72256 -16 -0.022% math/big.s 152992 153024 +32 +0.021% go/printer.s 77680 77696 +16 +0.021% fmt [cmd/compile].s 81760 81744 -16 -0.020% math/big [cmd/compile].s 153040 153072 +32 +0.021% cmd/asm/internal/asm.s 57360 57376 +16 +0.028% crypto/tls.s 354304 354288 -16 -0.005% cmd/compile/internal/abi [cmd/compile].s 22752 22736 -16 -0.070% cmd/vendor/github.com/google/pprof/internal/report.s 67008 67040 +32 +0.048% cmd/trace.s 215040 215008 -32 -0.015% cmd/vendor/golang.org/x/tools/go/analysis/passes/tests.s 12544 12528 -16 -0.128% cmd/compile/internal/ssa.s 3209248 3209296 +48 +0.001% cmd/compile/internal/ssa [cmd/compile].s 3319152 3319168 +16 +0.000% total 33366288 33366416 +128 +0.000% Change-Id: I8111792c9dd4f927b49a6d5dd90a3fdc3ec26277 Reviewed-on: https://go-review.googlesource.com/c/go/+/666836 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Carlos Amedee <carlos@golang.org> Reviewed-by: Keith Randall <khr@google.com>
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 4.0 Attribution license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://go.dev/dl/.
After downloading a binary release, visit https://go.dev/doc/install for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.