https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80125
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- One thing is that I wonder what is the point in calling reg_used_between_p if all_adjacent, then there are no insns in between. And, if !all_adjacent, I'd hope that !PREV_INSN (succ) implies NEXT_INSN (succ) == succ2 and we should then check reg_used_between_p between insn and succ2. || (succ2 && reg_used_between_p (dest, succ, succ2)) seems redundant with the already existing || (!all_adjacent && ((succ2 && (reg_used_between_p (dest, succ2, i3) || reg_used_between_p (dest, succ, succ2))) where we already check exactly the same thing (only guarded with !all_adjacent, but if that isn't true, then there are no active insns in between those two).