summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHongxu Jia <hongxu.jia@windriver.com>2014-08-11 10:23:46 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-08-23 23:02:00 +0100
commitcf385a55873b0ef0935911dfa224694e08b4f559 (patch)
tree0f6506223dc5ad87aa6129e8d2d27440c3473001
parentffb4933475e3214f103d9db98f6a71b60640b215 (diff)
downloadpoky-cf385a55873b0ef0935911dfa224694e08b4f559.tar.gz
guile: workaround ice ssa corruption while DEBUG_BUILD
Add: MACHINE = "qemux86-64" DEBUG_BUILD = "1" to local.conf and there was a ssa corruption to build guile: .. 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 check the value of nshuf to workaround it. The tweak didn't change previous logic. [YOCTO #6411] (From OE-Core rev: 3470bbf4ae178479bd090d7191d6f0469f154b0d) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch60
-rw-r--r--meta/recipes-devtools/guile/guile_2.0.11.bb1
2 files changed, 61 insertions, 0 deletions
diff --git a/meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch b/meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch
new file mode 100644
index 0000000000..6c348384a5
--- /dev/null
+++ b/meta/recipes-devtools/guile/files/workaround-ice-ssa-corruption.patch
@@ -0,0 +1,60 @@
1libguile/vm-i-system.c: workaround ice ssa corruption while compiling with option -g -O
2
3While compiling with option -g -O, there was a ssa corruption:
4..
5Unable to coalesce ssa_names 48 and 3476 which are marked as MUST COALESCE.
6sp_48(ab) and sp_3476(ab)
7guile-2.0.11/libguile/vm-engine.c: In function 'vm_debug_engine':
8guile-2.0.11/libguile/vm.c:673:19: internal compiler error: SSA corruption
9 #define VM_NAME vm_debug_engine
10 ^
11guile-2.0.11/libguile/vm-engine.c:39:1: note: in expansion of macro 'VM_NAME'
12 VM_NAME (SCM vm, SCM program, SCM *argv, int nargs)
13 ^
14Please submit a full bug report,
15with preprocessed source if appropriate.
16See <http://gcc.gnu.org/bugs.html> for instructions.
17...
18
19Tweak libguile/vm-i-system.c to add boundary value check to workaround it.
20
21Upstream-Status: Pending
22
23Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
24---
25 libguile/vm-i-system.c | 20 ++++++++++++++++----
26 1 file changed, 16 insertions(+), 4 deletions(-)
27
28diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c
29--- a/libguile/vm-i-system.c
30+++ b/libguile/vm-i-system.c
31@@ -625,10 +625,22 @@ VM_DEFINE_INSTRUCTION (47, bind_optionals_shuffle, "bind-optionals/shuffle", 6,
32 /* now shuffle up, from walk to ntotal */
33 {
34 scm_t_ptrdiff nshuf = sp - walk + 1, i;
35- sp = (fp - 1) + ntotal + nshuf;
36- CHECK_OVERFLOW ();
37- for (i = 0; i < nshuf; i++)
38- sp[-i] = walk[nshuf-i-1];
39+ /* check the value of nshuf to workaround ice ssa corruption */
40+ /* while compiling with -O -g */
41+ if (nshuf > 0)
42+ {
43+ sp = (fp - 1) + ntotal + nshuf;
44+ CHECK_OVERFLOW ();
45+ for (i = 0; i < nshuf; i++)
46+ sp[-i] = walk[nshuf-i-1];
47+ }
48+ else
49+ {
50+ sp = (fp - 1) + ntotal + nshuf;
51+ CHECK_OVERFLOW ();
52+ for (i = 0; i < nshuf; i++)
53+ sp[-i] = walk[nshuf-i-1];
54+ }
55 }
56 /* and fill optionals & keyword args with SCM_UNDEFINED */
57 while (walk <= (fp - 1) + ntotal)
58--
591.9.1
60
diff --git a/meta/recipes-devtools/guile/guile_2.0.11.bb b/meta/recipes-devtools/guile/guile_2.0.11.bb
index 5b1e061af1..bd23c2b918 100644
--- a/meta/recipes-devtools/guile/guile_2.0.11.bb
+++ b/meta/recipes-devtools/guile/guile_2.0.11.bb
@@ -19,6 +19,7 @@ SRC_URI = "${GNU_MIRROR}/guile/guile-${PV}.tar.xz \
19 file://opensuse/guile-64bit.patch \ 19 file://opensuse/guile-64bit.patch \
20 file://guile_2.0.6_fix_sed_error.patch \ 20 file://guile_2.0.6_fix_sed_error.patch \
21 file://arm_endianness.patch \ 21 file://arm_endianness.patch \
22 file://workaround-ice-ssa-corruption.patch \
22 " 23 "
23 24
24# file://debian/0001-Change-guile-to-guile-X.Y-for-info-pages.patch 25# file://debian/0001-Change-guile-to-guile-X.Y-for-info-pages.patch