------- Comment #22 from chrbr at gcc dot gnu dot org 2010-01-28 13:09 ------- humm, looks like a latent bug. Accidentally the CP is inserted before a compact_jump, which enable further redirect jump optimisation. I don't think it is directly related to the fix, but lets work it a little bit more.
so we have just before dbr: jump_insn -> 2586 a constant pool L2586 jump_insn -> 3394 L3394: ... then in reorg_redirect_jump we redirect the jump over the CP and delete_related_insn so the code between the CP and the jump becomes dead. and we have jump_insn -> 3394 a constant pool L3394 ... but the label L2586 is used in the exception table... and thus remains undefined. now my question: how the exception table can refer to a region delimited by deleted labels. It's should be built after dbr isn't it ? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42841