aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/ppc64
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2017-04-06 13:42:31 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2017-04-07 16:57:03 +0000
commit63c1aff60b68dba82ca05d0ae6d0c67bcb0583c1 (patch)
treef792076a5b28f0f92c6779220c5260b472598323 /src/cmd/internal/obj/ppc64
parent817c1023b06a7e0dbd180609b63e06a64b6ebeaf (diff)
downloadgo-63c1aff60b68dba82ca05d0ae6d0c67bcb0583c1.tar.xz
cmd/internal/obj: eagerly initialize assemblers
CL 38662 changed the x86 assembler to be eagerly initialized, for a concurrent backend. This CL puts in place a proper mechanism for doing so, and switches all architectures to use it. Passes toolstash-check -all. Updates #15756 Change-Id: Id2aa527d3a8259c95797d63a2f0d1123e3ca2a1c Reviewed-on: https://go-review.googlesource.com/39917 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/ppc64')
-rw-r--r--src/cmd/internal/obj/ppc64/asm9.go9
-rw-r--r--src/cmd/internal/obj/ppc64/obj9.go2
2 files changed, 10 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go
index a6a359da23..523448b0d9 100644
--- a/src/cmd/internal/obj/ppc64/asm9.go
+++ b/src/cmd/internal/obj/ppc64/asm9.go
@@ -561,7 +561,7 @@ func span9(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
ctxt.Autosize = int32(p.To.Offset)
if oprange[AANDN&obj.AMask] == nil {
- buildop(ctxt)
+ ctxt.Diag("ppc64 ops not initialized, call ppc64.buildop first")
}
c := int64(0)
@@ -1052,6 +1052,13 @@ func opset(a, b0 obj.As) {
}
func buildop(ctxt *obj.Link) {
+ if oprange[AANDN&obj.AMask] != nil {
+ // Already initialized; stop now.
+ // This happens in the cmd/asm tests,
+ // each of which re-initializes the arch.
+ return
+ }
+
var n int
for i := 0; i < C_NCLASS; i++ {
diff --git a/src/cmd/internal/obj/ppc64/obj9.go b/src/cmd/internal/obj/ppc64/obj9.go
index 6e93cc3996..1349075043 100644
--- a/src/cmd/internal/obj/ppc64/obj9.go
+++ b/src/cmd/internal/obj/ppc64/obj9.go
@@ -1051,6 +1051,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc, framesize in
var Linkppc64 = obj.LinkArch{
Arch: sys.ArchPPC64,
+ Init: buildop,
Preprocess: preprocess,
Assemble: span9,
Progedit: progedit,
@@ -1058,6 +1059,7 @@ var Linkppc64 = obj.LinkArch{
var Linkppc64le = obj.LinkArch{
Arch: sys.ArchPPC64LE,
+ Init: buildop,
Preprocess: preprocess,
Assemble: span9,
Progedit: progedit,