https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85638
--- Comment #12 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > I wonder why this doesn't seem to happen with DWARF-2 exception handling. OK, the difference is that dw2_build_landing_pads does: lp->landing_pad = gen_label_rtx (); emit_label (lp->landing_pad); LABEL_PRESERVE_P (lp->landing_pad) = 1; whereas sjlj_emit_dispatch_table does: lp->landing_pad = dispatch_label; In other words, there is a landing pad per post-landing pad with DWARF-2 and a common landing pad for all post-landing pads with SJLJ so, when you redirect the edges from post-landing to landing pads, you lose the 1->1 mapping with SJLJ.