12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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
|