|
@@ -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
|
|
|
+
|