commit:     cdf949db050341aec29539c5fb926f60b7fcffad
Author:     Amy Winston <amynka <AT> gentoo <DOT> org>
AuthorDate: Wed Sep 21 17:58:59 2016 +0000
Commit:     Amy Winston <amynka <AT> gentoo <DOT> org>
CommitDate: Wed Sep 21 18:01:45 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cdf949db

dev-scheme/guile: add patch for bug #594010

Package-Manager: portage-2.2.28

 ...uile-2.0.12-workaround-ice-ssa-corruption.patch | 64 ++++++++++++++++++++++
 dev-scheme/guile/guile-2.0.12-r1.ebuild            |  3 +-
 2 files changed, 66 insertions(+), 1 deletion(-)

diff --git 
a/dev-scheme/guile/files/guile-2.0.12-workaround-ice-ssa-corruption.patch 
b/dev-scheme/guile/files/guile-2.0.12-workaround-ice-ssa-corruption.patch
new file mode 100644
index 00000000..54f3158
--- /dev/null
+++ b/dev-scheme/guile/files/guile-2.0.12-workaround-ice-ssa-corruption.patch
@@ -0,0 +1,64 @@
+libguile/vm-i-system.c: workaround ice ssa corruption while compiling with 
option -g -O
+
+While compiling with option -g -O, there was a ssa corruption:
+..
+Unable to coalesce ssa_names 48 and 3476 which are marked as MUST COALESCE.
+sp_48(ab) and  sp_3476(ab)
+guile-2.0.11/libguile/vm-engine.c: In function 'vm_debug_engine':
+guile-2.0.11/libguile/vm.c:673:19: internal compiler error: SSA corruption
+ #define VM_NAME   vm_debug_engine
+                   ^
+guile-2.0.11/libguile/vm-engine.c:39:1: note: in expansion of macro 'VM_NAME'
+ VM_NAME (SCM vm, SCM program, SCM *argv, int nargs)
+ ^
+Please submit a full bug report,
+with preprocessed source if appropriate.
+See <http://gcc.gnu.org/bugs.html> for instructions.
+...
+
+Tweak libguile/vm-i-system.c to add boundary value check to workaround it.
+
+Upstream-Status: Pending
+
+Signed-off-by: Hongxu Jia <hongxu....@windriver.com>
+
+Fixes Buildroot autobuilder failures on AArch64.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazz...@free-electrons.com>
+---
+ libguile/vm-i-system.c | 20 ++++++++++++++++----
+ 1 file changed, 16 insertions(+), 4 deletions(-)
+
+diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c
+--- a/libguile/vm-i-system.c
++++ b/libguile/vm-i-system.c
+@@ -625,10 +625,22 @@ VM_DEFINE_INSTRUCTION (47, bind_optionals_shuffle, 
"bind-optionals/shuffle", 6,
+   /* now shuffle up, from walk to ntotal */
+   {
+     scm_t_ptrdiff nshuf = sp - walk + 1, i;
+-    sp = (fp - 1) + ntotal + nshuf;
+-    CHECK_OVERFLOW ();
+-    for (i = 0; i < nshuf; i++)
+-      sp[-i] = walk[nshuf-i-1];
++    /* check the value of nshuf to workaround ice ssa corruption */
++    /* while compiling with -O -g */
++    if (nshuf > 0)
++    {
++      sp = (fp - 1) + ntotal + nshuf;
++      CHECK_OVERFLOW ();
++      for (i = 0; i < nshuf; i++)
++        sp[-i] = walk[nshuf-i-1];
++    }
++    else
++    {
++      sp = (fp - 1) + ntotal + nshuf;
++      CHECK_OVERFLOW ();
++      for (i = 0; i < nshuf; i++)
++        sp[-i] = walk[nshuf-i-1];
++    }
+   }
+   /* and fill optionals & keyword args with SCM_UNDEFINED */
+   while (walk <= (fp - 1) + ntotal)
+-- 
+1.9.1
+

diff --git a/dev-scheme/guile/guile-2.0.12-r1.ebuild 
b/dev-scheme/guile/guile-2.0.12-r1.ebuild
index 35bd1b0..7a08ad6 100644
--- a/dev-scheme/guile/guile-2.0.12-r1.ebuild
+++ b/dev-scheme/guile/guile-2.0.12-r1.ebuild
@@ -31,7 +31,8 @@ DEPEND="${RDEPEND}
 SLOT="12/22" # subslot is soname version
 MAJOR="2.0"
 
-PATCHES=( "${FILESDIR}/${P}-build_includes2.patch" ) #bug 590528 patched by 
upstream second try
+PATCHES=( "${FILESDIR}/${P}-build_includes2.patch"
+         "${FILESDIR}/${P}-workaround-ice-ssa-corruption.patch" ) # includes2 
bug 590528 patched by upstream, bug 594010
 DOCS=( GUILE-VERSION HACKING README )
 
 src_prepare() {

Reply via email to