1 From 7c11710230921246156aecc20eb4b6ccaeaaa473 Mon Sep 17 00:00:00 2001
2 From: Max Filippov <jcmvbkbc@gmail.com>
3 Date: Tue, 24 Sep 2019 04:15:17 -0700
4 Subject: [PATCH] xtensa: fix PR target/91880
6 Xtensa hwloop_optimize segfaults when zero overhead loop is about to be
7 inserted as the first instruction of the function.
8 Insert zero overhead loop instruction into new basic block before the
9 loop when basic block that precedes the loop is empty.
11 2019-09-26 Max Filippov <jcmvbkbc@gmail.com>
13 * config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead
14 loop instruction into new basic block before the loop when basic
15 block that precedes the loop is empty.
17 Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
19 Backported from: r276166
21 gcc/config/xtensa/xtensa.c | 5 ++--
22 1 file changed, 3 insertions(+), 2 deletions(-)
24 diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
25 index ee5612441e25..2527468d57db 100644
26 --- a/gcc/config/xtensa/xtensa.c
27 +++ b/gcc/config/xtensa/xtensa.c
28 @@ -4232,7 +4232,9 @@ hwloop_optimize (hwloop_info loop)
32 - if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1)
33 + entry_after = BB_END (entry_bb);
34 + if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1
39 @@ -4253,7 +4255,6 @@ hwloop_optimize (hwloop_info loop)
43 - entry_after = BB_END (entry_bb);
44 while (DEBUG_INSN_P (entry_after)
45 || (NOTE_P (entry_after)
46 && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK))