http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46499
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2010-11-22 14:10:16 UTC --- Created attachment 22483 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22483 gcc46-pr46499.patch Untested fix. We have since last: (jump_insn 8 7 9 (set (pc) (label_ref 0)) pr46499-1.c:26 -1 (nil)) (barrier 9 8 10) (jump_insn 10 9 11 (set (pc) (label_ref 0)) pr46499-1.c:26 -1 (nil)) (barrier 11 10 0) and maybe_cleanup_end_of_basic_block, as it sees there is no drop through label and thus all jumps must go to the other edge, decides to remove the first jump, but doesn't remove the barrier right after it, and a barrier left in the middle of a bb after no insn that could cause the barrier of course confuses everything and is wrong, because we really want to jump to the target label instead of assuming the spot is never reachable.