On Mon, 5 Mar 2012, Jakub Jelinek wrote:

> Hi!
> 
> Here is a tiny cleanup, written as part of PR52139 fix.
> Bootstrapped/regtested on x86_64-linux and i686-linux,
> ok for trunk?

Ok.

Thanks,
Richard.

> 2012-03-05  Jakub Jelinek  <ja...@redhat.com>
> 
>       * cfgrtl.c (cfg_layout_merge_blocks): Cleanup.
> 
> --- gcc/cfgrtl.c.jj   2012-02-07 16:05:47.977533716 +0100
> +++ gcc/cfgrtl.c      2012-02-07 17:03:52.925956927 +0100
> @@ -2818,6 +2818,7 @@ static void
>  cfg_layout_merge_blocks (basic_block a, basic_block b)
>  {
>    bool forwarder_p = (b->flags & BB_FORWARDER_BLOCK) != 0;
> +  rtx insn;
>  
>    gcc_checking_assert (cfg_layout_can_merge_blocks_p (a, b));
>  
> @@ -2883,40 +2884,28 @@ cfg_layout_merge_blocks (basic_block a,
>    /* In the case basic blocks are not adjacent, move them around.  */
>    if (NEXT_INSN (BB_END (a)) != BB_HEAD (b))
>      {
> -      rtx first = unlink_insn_chain (BB_HEAD (b), BB_END (b));
> +      insn = unlink_insn_chain (BB_HEAD (b), BB_END (b));
>  
> -      emit_insn_after_noloc (first, BB_END (a), a);
> -      /* Skip possible DELETED_LABEL insn.  */
> -      if (!NOTE_INSN_BASIC_BLOCK_P (first))
> -     first = NEXT_INSN (first);
> -      gcc_assert (NOTE_INSN_BASIC_BLOCK_P (first));
> -      BB_HEAD (b) = NULL;
> -
> -      /* emit_insn_after_noloc doesn't call df_insn_change_bb.
> -         We need to explicitly call. */
> -      update_bb_for_insn_chain (NEXT_INSN (first),
> -                             BB_END (b),
> -                             a);
> -
> -      delete_insn (first);
> +      emit_insn_after_noloc (insn, BB_END (a), a);
>      }
>    /* Otherwise just re-associate the instructions.  */
>    else
>      {
> -      rtx insn;
> -
> -      update_bb_for_insn_chain (BB_HEAD (b), BB_END (b), a);
> -
>        insn = BB_HEAD (b);
> -      /* Skip possible DELETED_LABEL insn.  */
> -      if (!NOTE_INSN_BASIC_BLOCK_P (insn))
> -     insn = NEXT_INSN (insn);
> -      gcc_assert (NOTE_INSN_BASIC_BLOCK_P (insn));
> -      BB_HEAD (b) = NULL;
>        BB_END (a) = BB_END (b);
> -      delete_insn (insn);
>      }
>  
> +  /* emit_insn_after_noloc doesn't call df_insn_change_bb.
> +     We need to explicitly call. */
> +  update_bb_for_insn_chain (insn, BB_END (b), a);
> +
> +  /* Skip possible DELETED_LABEL insn.  */
> +  if (!NOTE_INSN_BASIC_BLOCK_P (insn))
> +    insn = NEXT_INSN (insn);
> +  gcc_assert (NOTE_INSN_BASIC_BLOCK_P (insn));
> +  BB_HEAD (b) = NULL;
> +  delete_insn (insn);
> +
>    df_bb_delete (b->index);
>  
>    /* Possible tablejumps and barriers should appear after the block.  */
> 
>       Jakub
> 
> 

-- 
Richard Guenther <rguent...@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer

Reply via email to