mirror of git://gcc.gnu.org/git/gcc.git
re PR target/27863 (ICE in check_cfg, at haifa-sched.c:4615)
2006-06-08 Maxim Kuvyrkov <mkuvyrkov@ispras.ru> PR target/27863 * haifa-sched.c (unlink_other_notes, unlink_line_notes): Update basic block boundaries. From-SVN: r114484
This commit is contained in:
parent
960f80d1ee
commit
f70b22c942
|
@ -1,3 +1,9 @@
|
||||||
|
2006-06-08 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
|
||||||
|
|
||||||
|
PR target/27863
|
||||||
|
* haifa-sched.c (unlink_other_notes, unlink_line_notes): Update basic
|
||||||
|
block boundaries.
|
||||||
|
|
||||||
2006-06-08 Richard Guenther <rguenther@suse.de>
|
2006-06-08 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR middle-end/27116
|
PR middle-end/27116
|
||||||
|
|
|
@ -1243,12 +1243,22 @@ unlink_other_notes (rtx insn, rtx tail)
|
||||||
while (insn != tail && NOTE_NOT_BB_P (insn))
|
while (insn != tail && NOTE_NOT_BB_P (insn))
|
||||||
{
|
{
|
||||||
rtx next = NEXT_INSN (insn);
|
rtx next = NEXT_INSN (insn);
|
||||||
|
basic_block bb = BLOCK_FOR_INSN (insn);
|
||||||
|
|
||||||
/* Delete the note from its current position. */
|
/* Delete the note from its current position. */
|
||||||
if (prev)
|
if (prev)
|
||||||
NEXT_INSN (prev) = next;
|
NEXT_INSN (prev) = next;
|
||||||
if (next)
|
if (next)
|
||||||
PREV_INSN (next) = prev;
|
PREV_INSN (next) = prev;
|
||||||
|
|
||||||
|
/* Basic block can begin with either LABEL or
|
||||||
|
NOTE_INSN_BASIC_BLOCK. */
|
||||||
|
gcc_assert (BB_HEAD (bb) != insn);
|
||||||
|
|
||||||
|
/* Check if we are removing last insn in the BB. */
|
||||||
|
if (BB_END (bb) == insn)
|
||||||
|
BB_END (bb) = prev;
|
||||||
|
|
||||||
/* See sched_analyze to see how these are handled. */
|
/* See sched_analyze to see how these are handled. */
|
||||||
if (NOTE_LINE_NUMBER (insn) != NOTE_INSN_EH_REGION_BEG
|
if (NOTE_LINE_NUMBER (insn) != NOTE_INSN_EH_REGION_BEG
|
||||||
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_EH_REGION_END)
|
&& NOTE_LINE_NUMBER (insn) != NOTE_INSN_EH_REGION_END)
|
||||||
|
@ -1279,12 +1289,22 @@ unlink_line_notes (rtx insn, rtx tail)
|
||||||
|
|
||||||
if (write_symbols != NO_DEBUG && NOTE_LINE_NUMBER (insn) > 0)
|
if (write_symbols != NO_DEBUG && NOTE_LINE_NUMBER (insn) > 0)
|
||||||
{
|
{
|
||||||
|
basic_block bb = BLOCK_FOR_INSN (insn);
|
||||||
|
|
||||||
/* Delete the note from its current position. */
|
/* Delete the note from its current position. */
|
||||||
if (prev)
|
if (prev)
|
||||||
NEXT_INSN (prev) = next;
|
NEXT_INSN (prev) = next;
|
||||||
if (next)
|
if (next)
|
||||||
PREV_INSN (next) = prev;
|
PREV_INSN (next) = prev;
|
||||||
|
|
||||||
|
/* Basic block can begin with either LABEL or
|
||||||
|
NOTE_INSN_BASIC_BLOCK. */
|
||||||
|
gcc_assert (BB_HEAD (bb) != insn);
|
||||||
|
|
||||||
|
/* Check if we are removing last insn in the BB. */
|
||||||
|
if (BB_END (bb) == insn)
|
||||||
|
BB_END (bb) = prev;
|
||||||
|
|
||||||
/* Record line-number notes so they can be reused. */
|
/* Record line-number notes so they can be reused. */
|
||||||
LINE_NOTE (insn) = insn;
|
LINE_NOTE (insn) = insn;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue