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)