summaryrefslogtreecommitdiff
path: root/packages/gcc/4.9.4
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2017-09-12 18:33:28 (GMT)
committerMax Filippov <jcmvbkbc@gmail.com>2017-09-12 18:33:28 (GMT)
commit09259ace3b2a02d6bf854f02c5f92837064697fc (patch)
treef6fcba89f704221f1294600a8f2eec5a6bb35a65 /packages/gcc/4.9.4
parent42cb9694fb772ade45aa72f6bce946be053e51df (diff)
package/gcc: fix ICE on xtensa, PR target/82181
Memory references to DI mode objects could incorrectly be created at offsets that are not supported by instructions l32i/s32i, resulting in ICE at a stage when access to the object is split into access to its subwords: drivers/staging/rtl8188eu/core/rtw_ap.c:445:1: internal compiler error: in change_address_1, at emit-rtl.c:2126 Fixes: https://lkml.org/lkml/2017/9/10/151 Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'packages/gcc/4.9.4')
-rw-r--r--packages/gcc/4.9.4/876-xtensa-fix-PR-target-82181.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/packages/gcc/4.9.4/876-xtensa-fix-PR-target-82181.patch b/packages/gcc/4.9.4/876-xtensa-fix-PR-target-82181.patch
new file mode 100644
index 0000000..a613bb3
--- /dev/null
+++ b/packages/gcc/4.9.4/876-xtensa-fix-PR-target-82181.patch
@@ -0,0 +1,31 @@
+From c8fad280eb4cbfe2711e6715aed5749ff400bb80 Mon Sep 17 00:00:00 2001
+From: jcmvbkbc <jcmvbkbc@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Mon, 11 Sep 2017 21:53:38 +0000
+Subject: [PATCH] xtensa: fix PR target/82181
+
+2017-09-11 Max Filippov <jcmvbkbc@gmail.com>
+gcc/
+ Backport from mainline
+ * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
+ words of DImode object are reachable by xtensa_uimm8x4 access.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gcc/config/xtensa/xtensa.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
+index 3c0096113775..3eb4db85b971 100644
+--- a/gcc/config/xtensa/xtensa.c
++++ b/gcc/config/xtensa/xtensa.c
+@@ -612,6 +612,7 @@ xtensa_mem_offset (unsigned v, enum machine_mode mode)
+ case HImode:
+ return xtensa_uimm8x2 (v);
+
++ case DImode:
+ case DFmode:
+ return (xtensa_uimm8x4 (v) && xtensa_uimm8x4 (v + 4));
+
+--
+2.1.4
+