From: Richard Sandiford Date: Tue, 24 Oct 2023 10:30:52 +0000 (+0100) Subject: rtl-ssa: Fix handling of deleted insns X-Git-Tag: basepoints/gcc-15~5254 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c97b167e35774e5add4d1079b552383d3fea62dc;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/rtl-ssa/changes.cc b/gcc/rtl-ssa/changes.cc index 73ab3ccfd242..de6222ae736b 100644 --- a/gcc/rtl-ssa/changes.cc +++ b/gcc/rtl-ssa/changes.cc @@ -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) {