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)

Reply via email to