aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/arm
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/arm
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/arm')
-rw-r--r--src/cmd/internal/obj/arm/asm5.go9
-rw-r--r--src/cmd/internal/obj/arm/obj5.go1
2 files changed, 9 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/arm/asm5.go b/src/cmd/internal/obj/arm/asm5.go
index c755e90b23..56ee7aa2f9 100644
--- a/src/cmd/internal/obj/arm/asm5.go
+++ b/src/cmd/internal/obj/arm/asm5.go
@@ -557,7 +557,7 @@ func span5(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) {
}
if oprange[AAND&obj.AMask] == nil {
- buildop(ctxt)
+ ctxt.Diag("arm ops not initialized, call arm.buildop first")
}
ctxt.Cursym = cursym
@@ -1296,6 +1296,13 @@ func opset(a, b0 obj.As) {
}
func buildop(ctxt *obj.Link) {
+ if oprange[AAND&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_GOK; i++ {
diff --git a/src/cmd/internal/obj/arm/obj5.go b/src/cmd/internal/obj/arm/obj5.go
index f14577e2fa..89cf299bef 100644
--- a/src/cmd/internal/obj/arm/obj5.go
+++ b/src/cmd/internal/obj/arm/obj5.go
@@ -880,6 +880,7 @@ var unaryDst = map[obj.As]bool{
var Linkarm = obj.LinkArch{
Arch: sys.ArchARM,
+ Init: buildop,
Preprocess: preprocess,
Assemble: span5,
Progedit: progedit,