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