diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2023-10-24 11:30:52 +0100 |
---|---|---|
committer | Richard Sandiford <richard.sandiford@arm.com> | 2023-10-24 11:30:52 +0100 |
commit | c97b167e35774e5add4d1079b552383d3fea62dc (patch) | |
tree | fd6d95ae6e121932f1137bf415a27da9840e4619 /gcc | |
parent | 50313dcdf3324db6d6e522fcaa6ff94dd5de6d3f (diff) | |
download | gcc-c97b167e35774e5add4d1079b552383d3fea62dc.zip gcc-c97b167e35774e5add4d1079b552383d3fea62dc.tar.gz gcc-c97b167e35774e5add4d1079b552383d3fea62dc.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rtl-ssa/changes.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/rtl-ssa/changes.cc b/gcc/rtl-ssa/changes.cc index 73ab3cc..de6222a 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) { |