This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: New RTL check failures (Re: SH: use register names instead of numbers)
- To: ghazi at caip dot rutgers dot edu (Kaveh R. Ghazi)
- Subject: Re: New RTL check failures (Re: SH: use register names instead of numbers)
- From: Joern Rennecke <amylaar at redhat dot com>
- Date: Wed, 29 Nov 2000 00:12:55 +0000 (GMT)
- Cc: amylaar at redhat dot com, bernds at redhat dot com, gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
> I think this patch:
>
> > Thu Nov 23 20:01:20 2000 J"orn Rennecke <amylaar@redhat.com>
> >
> > * jump.c (delete_computation): Re-instate deletion of feeding insn.
> > (delete_insn): Look for REG_LABEL notes.
> > (redirect_tablejump): Delete feeding insns.
>
> has triggered some new testsuite failures when configuring with RTL
> checking. I get the following new errors on i686-pc-linux-gnu when
Yes, indeed.
Wed Nov 29 00:08:23 2000 J"orn Rennecke <amylaar@redhat.com>
* jump.c (delete_insn): Check that REG_LABEL note actually contains
a CODE_LABEL.
Index: jump.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/jump.c,v
retrieving revision 1.141
diff -p -r1.141 jump.c
*** jump.c 2000/11/24 19:51:09 1.141
--- jump.c 2000/11/29 00:08:21
*************** delete_insn (insn)
*** 2857,2863 ****
/* Likewise for an ordinary INSN / CALL_INSN with a REG_LABEL note. */
if (GET_CODE (insn) == INSN || GET_CODE (insn) == CALL_INSN)
for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
! if (REG_NOTE_KIND (note) == REG_LABEL)
if (--LABEL_NUSES (XEXP (note, 0)) == 0)
delete_insn (XEXP (note, 0));
--- 2857,2865 ----
/* Likewise for an ordinary INSN / CALL_INSN with a REG_LABEL note. */
if (GET_CODE (insn) == INSN || GET_CODE (insn) == CALL_INSN)
for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
! if (REG_NOTE_KIND (note) == REG_LABEL
! /* This could also be a NOTE_INSN_DELETED_LABEL note. */
! && GET_CODE (XEXP (note, 0)) == CODE_LABEL)
if (--LABEL_NUSES (XEXP (note, 0)) == 0)
delete_insn (XEXP (note, 0));