2 new, with your patch on 2002-01-10T20:57:36Z.
Jan Hubicka
jh@suse.cz
Fri Jan 11 04:21:00 GMT 2002
>
> > The new failures are:
> > native gcc.sum gcc.c-torture/execute/920302-1.c
> > native gcc.sum gcc.c-torture/execute/comp-goto-1.c
>
> Hi Jan,
>
> I'm not completely sure, but I bet this is your recent cfgcleanup
> patch. Could you look at it?
It does not apperas to be realted to cfgcleanup. The purpose of failure
is that we unroll loop containing instruction having REG_LABEL referencing
insn outside. While updating references to insns it aborts on reference
to insn outside unrolled loop.
I am not quite sure why it didn't happen previously - perhaps as a result
of strengthtened gcse, but it looks valid transformation to me and I
believe I need just avoid the abort.
Fri Jan 11 11:41:26 CET 2002 Jan Hubicka <jh@suse.cz>
* (final_reg_note_copy): Avoid crash on REG_LABEL note referencing
outside.
Index: unroll.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/unroll.c,v
retrieving revision 1.156
diff -c -3 -p -r1.156 unroll.c
*** unroll.c 2002/01/10 21:00:43 1.156
--- unroll.c 2002/01/11 10:39:06
*************** final_reg_note_copy (notesp, map)
*** 1741,1751 ****
{
rtx insn = map->insn_map[INSN_UID (XEXP (note, 0))];
! /* If we failed to remap the note, something is awry. */
if (!insn)
! abort ();
!
! XEXP (note, 0) = insn;
}
}
--- 1741,1756 ----
{
rtx insn = map->insn_map[INSN_UID (XEXP (note, 0))];
! /* If we failed to remap the note, something is awry.
! Allow REG_LABEL as it may reference label outside
! the unrolled loop. */
if (!insn)
! {
! if (REG_NOTE_KIND (note) != REG_LABEL)
! abort ();
! }
! else
! XEXP (note, 0) = insn;
}
}
More information about the Gcc-patches
mailing list