[gcc(refs/users/marxin/heads/marxin-gcc-benchmark-branch)] Avoid putting a REG_NOTE on anything other than an INSN in haifa-sched.c
Martin Liska
marxin@gcc.gnu.org
Mon Mar 30 10:40:26 GMT 2020
https://gcc.gnu.org/g:e6ce69cae5059dfd715edd4e26653c23baf4cb0f
commit e6ce69cae5059dfd715edd4e26653c23baf4cb0f
Author: Andrew Pinski <apinski@marvell.com>
Date: Fri Mar 6 08:34:01 2020 -0700
Avoid putting a REG_NOTE on anything other than an INSN in haifa-sched.c
PR rtl-optimization/93996
* haifa-sched.c (remove_notes): Be more careful when adding
REG_SAVE_NOTE.
Diff:
---
gcc/ChangeLog | 7 +++++++
gcc/haifa-sched.c | 9 +++++++++
2 files changed, 16 insertions(+)
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 843648314ae..e38af8ed620 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2020-03-06 Andrew Pinski <apinski@marvell.com>
+ Jeff Law <law@redhat.com>
+
+ PR rtl-optimization/93996
+ * haifa-sched.c (remove_notes): Be more careful when adding
+ REG_SAVE_NOTE.
+
2020-03-06 Delia Burduv <delia.burduv@arm.com>
* config/arm/arm_neon.h (vld2_bf16): New.
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 1d3de7b6a76..80687fb5359 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -4239,6 +4239,15 @@ remove_notes (rtx_insn *head, rtx_insn *tail)
if (insn != tail)
{
remove_insn (insn);
+ /* If an insn was split just before the EPILOGUE_BEG note and
+ that split created new basic blocks, we could have a
+ BASIC_BLOCK note here. Safely advance over it in that case
+ and assert that we land on a real insn. */
+ if (NOTE_P (next)
+ && NOTE_KIND (next) == NOTE_INSN_BASIC_BLOCK
+ && next != next_tail)
+ next = NEXT_INSN (next);
+ gcc_assert (INSN_P (next));
add_reg_note (next, REG_SAVE_NOTE,
GEN_INT (NOTE_INSN_EPILOGUE_BEG));
break;
More information about the Gcc-cvs
mailing list