From 4dac543bb6ecc085acf6ed087910ef952ebea15f Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 10 Oct 2019 14:11:10 +0200 Subject: xtensa: fix bootup, add buildroot patches --- ...1-xtensa-backport-fix-for-PR-target-90922.patch | 43 +++++++++++++++++++ .../8.3.0/0002-xtensa-fix-PR-target-91880.patch | 49 ++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 toolchain/gcc/patches/8.3.0/0001-xtensa-backport-fix-for-PR-target-90922.patch create mode 100644 toolchain/gcc/patches/8.3.0/0002-xtensa-fix-PR-target-91880.patch (limited to 'toolchain/gcc') 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 +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 + + * 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 +--- + 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 +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 +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 +--- +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 + -- cgit v1.2.3