mirror of
https://github.com/golang/go
synced 2024-11-18 00:44:47 -07:00
cmd/compile: remove gc.Sysfunc calls from 387 backend
gc.Sysfunc must not be called concurrently. We set up runtime routines used by the backend prior to doing any backend compilation. I missed the 387 ones; fix that. Sysfunc should have been unexported during 1.9. I will rectify that in a subsequent CL. Fixes #21352 Change-Id: I8386eaa1e05879c25c672b9c9fc693c938e9aeb6 Reviewed-on: https://go-review.googlesource.com/54090 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Avelino <t@avelino.xxx> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
6b53dd4f2b
commit
2fe53d8d55
@ -293,4 +293,8 @@ var (
|
|||||||
typedmemmove,
|
typedmemmove,
|
||||||
typedmemclr,
|
typedmemclr,
|
||||||
Udiv *obj.LSym
|
Udiv *obj.LSym
|
||||||
|
|
||||||
|
// GO386=387
|
||||||
|
ControlWord64trunc,
|
||||||
|
ControlWord32 *obj.LSym
|
||||||
)
|
)
|
||||||
|
@ -92,6 +92,10 @@ func initssaconfig() {
|
|||||||
typedmemmove = Sysfunc("typedmemmove")
|
typedmemmove = Sysfunc("typedmemmove")
|
||||||
typedmemclr = Sysfunc("typedmemclr")
|
typedmemclr = Sysfunc("typedmemclr")
|
||||||
Udiv = Sysfunc("udiv")
|
Udiv = Sysfunc("udiv")
|
||||||
|
|
||||||
|
// GO386=387 runtime functions
|
||||||
|
ControlWord64trunc = Sysfunc("controlWord64trunc")
|
||||||
|
ControlWord32 = Sysfunc("controlWord32")
|
||||||
}
|
}
|
||||||
|
|
||||||
// buildssa builds an SSA function for fn.
|
// buildssa builds an SSA function for fn.
|
||||||
|
@ -120,7 +120,7 @@ func ssaGenValue387(s *gc.SSAGenState, v *ssa.Value) {
|
|||||||
p = s.Prog(x86.AFLDCW)
|
p = s.Prog(x86.AFLDCW)
|
||||||
p.From.Type = obj.TYPE_MEM
|
p.From.Type = obj.TYPE_MEM
|
||||||
p.From.Name = obj.NAME_EXTERN
|
p.From.Name = obj.NAME_EXTERN
|
||||||
p.From.Sym = gc.Sysfunc("controlWord32")
|
p.From.Sym = gc.ControlWord32
|
||||||
}
|
}
|
||||||
|
|
||||||
var op obj.As
|
var op obj.As
|
||||||
@ -210,7 +210,7 @@ func ssaGenValue387(s *gc.SSAGenState, v *ssa.Value) {
|
|||||||
p = s.Prog(x86.AFLDCW)
|
p = s.Prog(x86.AFLDCW)
|
||||||
p.From.Type = obj.TYPE_MEM
|
p.From.Type = obj.TYPE_MEM
|
||||||
p.From.Name = obj.NAME_EXTERN
|
p.From.Name = obj.NAME_EXTERN
|
||||||
p.From.Sym = gc.Sysfunc("controlWord64trunc")
|
p.From.Sym = gc.ControlWord64trunc
|
||||||
|
|
||||||
// Now do the conversion.
|
// Now do the conversion.
|
||||||
p = s.Prog(x86.AFMOVLP)
|
p = s.Prog(x86.AFMOVLP)
|
||||||
|
Loading…
Reference in New Issue
Block a user