rtl-ssa: Fix handling of deleted insns

RTL-SSA queues up some invasive changes for later.  But sometimes
the insns involved in those changes can be deleted by later
optimisations, making the queued change unnecessary.  This patch
checks for that case.

gcc/
	* rtl-ssa/changes.cc (function_info::perform_pending_updates): Check
	whether an insn has been replaced by a note.
This commit is contained in:
Richard Sandiford 2023-10-24 11:30:52 +01:00
parent 50313dcdf3
commit c97b167e35

View file

@ -983,7 +983,10 @@ function_info::perform_pending_updates ()
for (insn_info *insn : m_queued_insn_updates)
{
rtx_insn *rtl = insn->rtl ();
if (JUMP_P (rtl))
if (NOTE_P (rtl))
// The insn was later optimized away, typically to a NOTE_INSN_DELETED.
;
else if (JUMP_P (rtl))
{
if (INSN_CODE (rtl) == NOOP_MOVE_INSN_CODE)
{