xref: /OK3568_Linux_fs/buildroot/package/gcc/8.4.0/0001-xtensa-fix-PR-target-91880.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From 28623c81b50663e946790649352cb1b3ed23954d Mon Sep 17 00:00:00 2001
2From: Max Filippov <jcmvbkbc@gmail.com>
3Date: Tue, 24 Sep 2019 04:15:17 -0700
4Subject: [PATCH] xtensa: fix PR target/91880
5
6Xtensa hwloop_optimize segfaults when zero overhead loop is about to be
7inserted as the first instruction of the function.
8Insert zero overhead loop instruction into new basic block before the
9loop when basic block that precedes the loop is empty.
10
112019-09-26  Max Filippov  <jcmvbkbc@gmail.com>
12gcc/
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.
16
17Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
18[Romain: rebase on gcc 8.4.0]
19Signed-off-by: Romain Naour <romain.naour@smile.fr>
20---
21Backported from: r276166
22
23 gcc/config/xtensa/xtensa.c | 5 +++--
24 1 file changed, 3 insertions(+), 2 deletions(-)
25
26diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
27index 08f9f7c7a8f..de206527810 100644
28--- a/gcc/config/xtensa/xtensa.c
29+++ b/gcc/config/xtensa/xtensa.c
30@@ -4232,7 +4232,9 @@ hwloop_optimize (hwloop_info loop)
31
32   seq = get_insns ();
33
34-  if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1)
35+  entry_after = BB_END (entry_bb);
36+  if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1
37+      || !entry_after)
38     {
39       basic_block new_bb;
40       edge e;
41@@ -4253,7 +4255,6 @@ hwloop_optimize (hwloop_info loop)
42     }
43   else
44     {
45-      entry_after = BB_END (entry_bb);
46       while (DEBUG_INSN_P (entry_after)
47              || (NOTE_P (entry_after)
48 		 && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK))
49--
502.24.1
51
52