summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2022-03-02 11:59:48 -0500
committerCherry Mui <cherryyz@google.com>2022-03-18 16:39:28 +0000
commit8ff42d1bb1919b38e0d852618168f18d33db866b (patch)
treebab2ab600dadf25001b37da9d11c68cdf09586f3
parent2c92b2349a0b735a447b07e6209f311ece8de91c (diff)
downloadgo-git-8ff42d1bb1919b38e0d852618168f18d33db866b.tar.gz
internal/abi, internal/buildcfg: always enable register ABI on ARM64
In last cycle we developed register ABI for ARM64, enabled by default as a GOEXPERIMENT. This cycle we turn it on all the time. Later CLs will clean up fallback code. To support in-development platforms (e.g. RISC-V), separate the boolean variables for in-development platforms and always-on platforms. Change-Id: I97c27f6aeccc85ccc57eed2abd783b176da3ad80 Reviewed-on: https://go-review.googlesource.com/c/go/+/393364 Trust: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
-rw-r--r--src/internal/abi/abi_arm64.go2
-rw-r--r--src/internal/abi/abi_generic.go2
-rw-r--r--src/internal/buildcfg/exp.go14
3 files changed, 11 insertions, 7 deletions
diff --git a/src/internal/abi/abi_arm64.go b/src/internal/abi/abi_arm64.go
index 8f85901c47..4dc51431bf 100644
--- a/src/internal/abi/abi_arm64.go
+++ b/src/internal/abi/abi_arm64.go
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build goexperiment.regabiargs
-
package abi
const (
diff --git a/src/internal/abi/abi_generic.go b/src/internal/abi/abi_generic.go
index d7d2f3749b..bc8483b4f9 100644
--- a/src/internal/abi/abi_generic.go
+++ b/src/internal/abi/abi_generic.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-//go:build !goexperiment.regabiargs && !amd64
+//go:build !goexperiment.regabiargs && !amd64 && !arm64
package abi
diff --git a/src/internal/buildcfg/exp.go b/src/internal/buildcfg/exp.go
index a56b36efdf..b2bf9b2c83 100644
--- a/src/internal/buildcfg/exp.go
+++ b/src/internal/buildcfg/exp.go
@@ -56,9 +56,16 @@ var FramePointerEnabled = GOARCH == "amd64" || GOARCH == "arm64"
//
// TODO(mdempsky): Move to internal/goexperiment.
func ParseGOEXPERIMENT(goos, goarch, goexp string) (*ExperimentFlags, error) {
- regabiSupported := false
+ // regabiSupported is set to true on platforms where register ABI is
+ // supported and enabled by default.
+ // regabiAlwaysOn is set to true on platforms where register ABI is
+ // always on.
+ var regabiSupported, regabiAlwaysOn bool
switch goarch {
- case "amd64", "arm64", "ppc64le", "ppc64":
+ case "amd64", "arm64":
+ regabiAlwaysOn = true
+ fallthrough
+ case "ppc64le", "ppc64":
regabiSupported = true
}
@@ -120,8 +127,7 @@ func ParseGOEXPERIMENT(goos, goarch, goexp string) (*ExperimentFlags, error) {
}
}
- // regabi is always enabled on amd64.
- if goarch == "amd64" {
+ if regabiAlwaysOn {
flags.RegabiWrappers = true
flags.RegabiArgs = true
}