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.

Reply via email to