mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[release-branch.go1.9] cmd/compile: remove gc.Sysfunc calls from 387 backend
[This is a cherry-pick of CL 54090 to the 1.9 release branch.] 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: I485bb1867b46d8e5cf64bc820b8963576dc16174 Reviewed-on: https://go-review.googlesource.com/55970 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
ff38035a62
commit
9a4e7942ea
3 changed files with 10 additions and 2 deletions
|
|
@ -293,4 +293,8 @@ var (
|
|||
typedmemmove,
|
||||
typedmemclr,
|
||||
Udiv *obj.LSym
|
||||
|
||||
// GO386=387
|
||||
ControlWord64trunc,
|
||||
ControlWord32 *obj.LSym
|
||||
)
|
||||
|
|
|
|||
|
|
@ -92,6 +92,10 @@ func initssaconfig() {
|
|||
typedmemmove = Sysfunc("typedmemmove")
|
||||
typedmemclr = Sysfunc("typedmemclr")
|
||||
Udiv = Sysfunc("udiv")
|
||||
|
||||
// GO386=387 runtime functions
|
||||
ControlWord64trunc = Sysfunc("controlWord64trunc")
|
||||
ControlWord32 = Sysfunc("controlWord32")
|
||||
}
|
||||
|
||||
// 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.From.Type = obj.TYPE_MEM
|
||||
p.From.Name = obj.NAME_EXTERN
|
||||
p.From.Sym = gc.Sysfunc("controlWord32")
|
||||
p.From.Sym = gc.ControlWord32
|
||||
}
|
||||
|
||||
var op obj.As
|
||||
|
|
@ -210,7 +210,7 @@ func ssaGenValue387(s *gc.SSAGenState, v *ssa.Value) {
|
|||
p = s.Prog(x86.AFLDCW)
|
||||
p.From.Type = obj.TYPE_MEM
|
||||
p.From.Name = obj.NAME_EXTERN
|
||||
p.From.Sym = gc.Sysfunc("controlWord64trunc")
|
||||
p.From.Sym = gc.ControlWord64trunc
|
||||
|
||||
// Now do the conversion.
|
||||
p = s.Prog(x86.AFMOVLP)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue