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