Upstream has already provided a patch, and I can confirm it solves the issue:
diff --git a/src/cmd/compile/internal/x86/387.go b/src/cmd/compile/internal/x86/387.go index cdac000..7a36224 100644 --- a/src/cmd/compile/internal/x86/387.go +++ b/src/cmd/compile/internal/x86/387.go @@ -46,6 +46,9 @@ case ssa.Op386MOVSSloadidx1, ssa.Op386MOVSDloadidx1: p.From.Scale = 1 p.From.Index = v.Args[1].Reg() + if p.From.Index == x86.REG_SP { + p.From.Reg, p.From.Index = p.From.Index, p.From.Reg + } case ssa.Op386MOVSSloadidx4: p.From.Scale = 4 p.From.Index = v.Args[1].Reg() @@ -95,6 +98,9 @@ case ssa.Op386MOVSSstoreidx1, ssa.Op386MOVSDstoreidx1: p.To.Scale = 1 p.To.Index = v.Args[1].Reg() + if p.To.Index == x86.REG_SP { + p.To.Reg, p.To.Index = p.To.Index, p.To.Reg + } case ssa.Op386MOVSSstoreidx4: p.To.Scale = 4 p.To.Index = v.Args[1].Reg() On 24/10/17 19:44, Martín Ferrari wrote: > forwarded 877541 https://github.com/golang/go/issues/22429 > thanks > > I have opened an issue in upstream's tracker: > https://github.com/golang/go/issues/22429 > -- Martín Ferrari (Tincho)