https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86108
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Looking at csa dump in more detail, from the block with abnormal predecessor we have a long series of quite short bbs ending with unconditional jumps, often containing some call. The bb with abnormal predecessor gets the two EH regs in ax/dx and copies them over to r12/r14. The next bb copies those back into ax/dx. Next bb copies those to r14/bx. Next 6 do useless ax=r14;r14=ax, then next bb does di=r14 and finally there is a bb that compares bx and conditionally calls _Unwind_Resume with the di argument. DF info looks ok to me in this dump. This chain of copying around the EH values is what the fast RTL DCE during jump2 breaks.