summaryrefslogtreecommitdiff
path: root/toolchain/gcc/patches
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2019-10-10 14:11:10 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2019-10-10 14:11:20 +0200
commit4dac543bb6ecc085acf6ed087910ef952ebea15f (patch)
treed4d8e683895f37e9643616a420baa186db4c60f8 /toolchain/gcc/patches
parentd7c7da149c0038d0abcc8a18e9a4d520b2796112 (diff)
xtensa: fix bootup, add buildroot patches
Diffstat (limited to 'toolchain/gcc/patches')
-rw-r--r--toolchain/gcc/patches/8.3.0/0001-xtensa-backport-fix-for-PR-target-90922.patch43
-rw-r--r--toolchain/gcc/patches/8.3.0/0002-xtensa-fix-PR-target-91880.patch49
2 files changed, 92 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/8.3.0/0001-xtensa-backport-fix-for-PR-target-90922.patch b/toolchain/gcc/patches/8.3.0/0001-xtensa-backport-fix-for-PR-target-90922.patch
new file mode 100644
index 000000000..c961ce5d2
--- /dev/null
+++ b/toolchain/gcc/patches/8.3.0/0001-xtensa-backport-fix-for-PR-target-90922.patch
@@ -0,0 +1,43 @@
+From a592242578e573778241cae6d3928c064dcdfda4 Mon Sep 17 00:00:00 2001
+From: jcmvbkbc <jcmvbkbc@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Tue, 18 Jun 2019 22:19:12 +0000
+Subject: [PATCH] xtensa: fix for PR target/90922
+
+Stack pointer adjustment code in prologue missed a case of no
+callee-saved registers and a stack frame size bigger than 128 bytes.
+Handle that case.
+
+This fixes the following gcc tests with call0 ABI:
+ gcc.c-torture/execute/stdarg-2.c
+ gcc.dg/torture/pr55882.c
+ gcc.dg/torture/pr57569.c
+
+gcc/
+2019-06-18 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack
+ pointer adjustment for the case of no callee-saved registers and
+ stack frame bigger than 128 bytes.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+ gcc/config/xtensa/xtensa.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
+index 19bd616d67f6..ee5612441e25 100644
+--- a/gcc/config/xtensa/xtensa.c
++++ b/gcc/config/xtensa/xtensa.c
+@@ -2862,7 +2862,8 @@ xtensa_expand_prologue (void)
+ gen_rtx_SET (mem, reg));
+ }
+ }
+- if (total_size > 1024)
++ if (total_size > 1024
++ || (!callee_save_size && total_size > 128))
+ {
+ rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG);
+ emit_move_insn (tmp_reg, GEN_INT (total_size -
+--
+2.11.0
+
diff --git a/toolchain/gcc/patches/8.3.0/0002-xtensa-fix-PR-target-91880.patch b/toolchain/gcc/patches/8.3.0/0002-xtensa-fix-PR-target-91880.patch
new file mode 100644
index 000000000..e65352501
--- /dev/null
+++ b/toolchain/gcc/patches/8.3.0/0002-xtensa-fix-PR-target-91880.patch
@@ -0,0 +1,49 @@
+From 7c11710230921246156aecc20eb4b6ccaeaaa473 Mon Sep 17 00:00:00 2001
+From: Max Filippov <jcmvbkbc@gmail.com>
+Date: Tue, 24 Sep 2019 04:15:17 -0700
+Subject: [PATCH] xtensa: fix PR target/91880
+
+Xtensa hwloop_optimize segfaults when zero overhead loop is about to be
+inserted as the first instruction of the function.
+Insert zero overhead loop instruction into new basic block before the
+loop when basic block that precedes the loop is empty.
+
+2019-09-26 Max Filippov <jcmvbkbc@gmail.com>
+gcc/
+ * config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead
+ loop instruction into new basic block before the loop when basic
+ block that precedes the loop is empty.
+
+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
+---
+Backported from: r276166
+
+ gcc/config/xtensa/xtensa.c | 5 ++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
+index ee5612441e25..2527468d57db 100644
+--- a/gcc/config/xtensa/xtensa.c
++++ b/gcc/config/xtensa/xtensa.c
+@@ -4232,7 +4232,9 @@ hwloop_optimize (hwloop_info loop)
+
+ seq = get_insns ();
+
+- if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1)
++ entry_after = BB_END (entry_bb);
++ if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1
++ || !entry_after)
+ {
+ basic_block new_bb;
+ edge e;
+@@ -4253,7 +4255,6 @@ hwloop_optimize (hwloop_info loop)
+ }
+ else
+ {
+- entry_after = BB_END (entry_bb);
+ while (DEBUG_INSN_P (entry_after)
+ || (NOTE_P (entry_after)
+ && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK))
+--
+2.11.0
+