Fix PPC bootstrap problem
Jan Hubicka
jh@suse.cz
Wed Aug 29 08:59:00 GMT 2001
Hi,
following patch fixes an bootstrap failure in libjava on PPC. The problem
is that reload manages to generate spilling code containing a note and
fixup_abnromal_edges is not at all happy abou it.
Bootstrapped PPC, regtesting in progress.
Honza
Wed Aug 29 17:54:32 CEST 2001 Jan Hubicka <jh@suse.cz>
* reload1.c (fixup_abnormal_edges): Allow NOTEs in the sequence.
Index: reload1.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/reload1.c,v
retrieving revision 1.289
diff -c -3 -p -r1.289 reload1.c
*** reload1.c 2001/08/25 21:39:46 1.289
--- reload1.c 2001/08/29 15:52:15
*************** fixup_abnormal_edges ()
*** 9497,9503 ****
}
if (e && GET_CODE (bb->end) != CALL_INSN && !can_throw_internal (bb->end))
{
! rtx insn = bb->end;
rtx next;
for (e = bb->succ; e; e = e->succ_next)
if (e->flags & EDGE_FALLTHRU)
--- 9497,9503 ----
}
if (e && GET_CODE (bb->end) != CALL_INSN && !can_throw_internal (bb->end))
{
! rtx insn = bb->end, stop = NEXT_INSN (bb->end);
rtx next;
for (e = bb->succ; e; e = e->succ_next)
if (e->flags & EDGE_FALLTHRU)
*************** fixup_abnormal_edges ()
*** 9513,9523 ****
bb->end = insn;
inserted = true;
insn = NEXT_INSN (insn);
! while (insn && GET_CODE (insn) == INSN)
{
next = NEXT_INSN (insn);
! insert_insn_on_edge (PATTERN (insn), e);
! flow_delete_insn (insn);
insn = next;
}
}
--- 9513,9526 ----
bb->end = insn;
inserted = true;
insn = NEXT_INSN (insn);
! while (insn && insn != stop)
{
next = NEXT_INSN (insn);
! if (INSN_P (insn))
! {
! insert_insn_on_edge (PATTERN (insn), e);
! flow_delete_insn (insn);
! }
insn = next;
}
}
More information about the Gcc-patches
mailing list