merge_blocks_nomove tweek

Jan Hubicka jh@suse.cz
Wed Sep 12 06:06:00 GMT 2001


Hi,
the BLOCK_FOR_INSN array is not updated properly, as the notes
in between BBs are now inside, but BLOCK_FOR_INSN is renumbered
only for insns from the second BB.

Honza

Tue Sep 11 15:47:06 CEST 2001  Jan Hubicka  <jh@suse.cz>
	* (merge_blocks_nomove): Update properly BLOCK_FOR_INSN
	array.

*************** merge_blocks_nomove (a, b)
*** 934,940 ****
  	}
  #endif
  
!       a_end = prev;
      }
    else if (GET_CODE (NEXT_INSN (a_end)) == BARRIER)
      del_first = NEXT_INSN (a_end);
--- 947,953 ----
  	}
  #endif
  
!       a_end = PREV_INSN (del_first);
      }
    else if (GET_CODE (NEXT_INSN (a_end)) == BARRIER)
      del_first = NEXT_INSN (a_end);
*************** merge_blocks_nomove (a, b)
*** 961,973 ****
    /* Reassociate the insns of B with A.  */
    if (!b_empty)
      {
        if (basic_block_for_insn)
  	{
! 	  BLOCK_FOR_INSN (b_head) = a;
! 	  while (b_head != b_end)
  	    {
! 	      b_head = NEXT_INSN (b_head);
! 	      BLOCK_FOR_INSN (b_head) = a;
  	    }
  	}
        a_end = b_end;
--- 974,987 ----
    /* Reassociate the insns of B with A.  */
    if (!b_empty)
      {
+       rtx x = a_end;
        if (basic_block_for_insn)
  	{
! 	  BLOCK_FOR_INSN (x) = a;
! 	  while (x != b_end)
  	    {
! 	      x = NEXT_INSN (x);
! 	      BLOCK_FOR_INSN (x) = a;
  	    }
  	}
        a_end = b_end;



More information about the Gcc-patches mailing list