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.

Reply via email to