http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56950

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Steven Bosscher from comment #7)
> Index: haifa-sched.c
> ===================================================================
> --- haifa-sched.c       (revision 199028)
> +++ haifa-sched.c       (working copy)
> @@ -7435,20 +7435,19 @@ find_fallthru_edge_from (basic_block pre
>  static void
>  sched_extend_bb (void)
>  {
> -  rtx insn;
> -
>    /* The following is done to keep current_sched_info->next_tail non null. 
> */
> -  insn = BB_END (EXIT_BLOCK_PTR->prev_bb);
> +  rtx end = BB_END (EXIT_BLOCK_PTR->prev_bb);
> +  rtx insn = DEBUG_INSN_P (end) ? prev_nondebug_insn (end) : end;
>    if (NEXT_INSN (insn) == 0

This should be NEXT_INSN (end) == 0

>        || (!NOTE_P (insn)
>           && !LABEL_P (insn)
>           /* Don't emit a NOTE if it would end up before a BARRIER.  */
>           && !BARRIER_P (NEXT_INSN (insn))))

and this && !BARRIER_P (NEXT_INSN (end))))

>      {
> -      rtx note = emit_note_after (NOTE_INSN_DELETED, insn);
> -      /* Make insn appear outside BB.  */
> +      rtx note = emit_note_after (NOTE_INSN_DELETED, end);
> +      /* Make note appear outside BB.  */
>        set_block_for_insn (note, NULL);
> -      BB_END (EXIT_BLOCK_PTR->prev_bb) = insn;
> +      BB_END (EXIT_BLOCK_PTR->prev_bb) = end;
>      }
>  }

Reply via email to