[Pkg-golang-commits] [golang] 01/02: Add debian/patches/0003-Do-not-use-SP-as-index-reg.patch (Closes: #877541)
Michael Stapelberg
michael at stapelberg.de
Fri Oct 27 07:06:13 UTC 2017
This is an automated email from the git hooks/post-receive script.
stapelberg pushed a commit to annotated tag debian/1.9.2-2
in repository golang.
commit a0cd15c626ef6aa48037755d3d577f9c6871d1f0
Author: Michael Stapelberg <stapelberg at debian.org>
Date: Fri Oct 27 08:54:41 2017 +0200
Add debian/patches/0003-Do-not-use-SP-as-index-reg.patch (Closes: #877541)
---
.../patches/0003-Do-not-use-SP-as-index-reg.patch | 56 ++++++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 57 insertions(+)
diff --git a/debian/patches/0003-Do-not-use-SP-as-index-reg.patch b/debian/patches/0003-Do-not-use-SP-as-index-reg.patch
new file mode 100644
index 0000000..8285b2a
--- /dev/null
+++ b/debian/patches/0003-Do-not-use-SP-as-index-reg.patch
@@ -0,0 +1,56 @@
+Author: Keith Randall <khr at golang.org>
+Date: Wed Oct 25 13:46:38 2017 -0700
+Description: cmd/compile: make sure not to use SP as an index register
+ ...because that's an illegal addressing mode.
+Reviewed-on: https://go-review.googlesource.com/73551
+Bug-Upstream: https://github.com/golang/go/issues/22429
+
+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()
+
+diff --git a/test/fixedbugs/issue22429.go b/test/fixedbugs/issue22429.go
+new file mode 100644
+index 0000000..289b434
+--- /dev/null
++++ b/test/fixedbugs/issue22429.go
+@@ -0,0 +1,18 @@
++// compile
++
++// Copyright 2017 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++// Make sure SSA->assembly pass can handle SP as an index register.
++
++package p
++
++type T struct {
++ a,b,c,d float32
++}
++
++func f(a *[8]T, i,j,k int) float32 {
++ b := *a
++ return b[i].a + b[j].b + b[k].c
++}
diff --git a/debian/patches/series b/debian/patches/series
index fe8bcb7..2362f90 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
0002-reproducible-BUILD_PATH_PREFIX_MAP.patch
+0003-Do-not-use-SP-as-index-reg.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-golang/golang.git
More information about the pkg-golang-commits
mailing list