This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: 27 GCC regressions, 27 new, with your patch on 2002-05-22T02:09:06Z.
- From: Richard Henderson <rth at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 22 May 2002 13:31:36 -0700
- Subject: Re: 27 GCC regressions, 27 new, with your patch on 2002-05-22T02:09:06Z.
- References: <200205220555.g4M5t2N18363@maat.sfbay.redhat.com> <Pine.LNX.4.33.0205221112320.6903-100000@www.eyesopen.com> <20020522175638.GA25163@atrey.karlin.mff.cuni.cz>
On Wed, May 22, 2002 at 07:56:38PM +0200, Zdenek Dvorak wrote:
> 2002-05-21 Richard Henderson <rth@redhat.com>
>
> * flow.c (life_analysis): Fix test for deleted label.
It is this patch. On closer analysis, the test is completely bogus.
I shouldn't have corrected it, but removed it.
The problem being that there may well be REG_LABEL notes referencing
deleted labels when said labels came from the &&label extension.
r~
* flow.c (life_analysis): Delete broken reg_label check.
Index: flow.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/flow.c,v
retrieving revision 1.522
diff -c -p -d -r1.522 flow.c
*** flow.c 21 May 2002 22:35:04 -0000 1.522
--- flow.c 22 May 2002 20:27:29 -0000
*************** life_analysis (f, file, flags)
*** 485,504 ****
free_basic_block_vars (1);
- #ifdef ENABLE_CHECKING
- {
- rtx insn;
-
- /* Search for any REG_LABEL notes which reference deleted labels. */
- for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
- {
- rtx inote = find_reg_note (insn, REG_LABEL, NULL_RTX);
- if (inote && GET_CODE (XEXP (inote, 0)) != CODE_LABEL)
- abort ();
- }
- }
- #endif
-
/* Removing dead insns should've made jumptables really dead. */
delete_dead_jumptables ();
}
--- 485,490 ----
*************** propagate_block_delete_insn (insn)
*** 1556,1566 ****
INSN may reference a deleted label, particularly when a jump
table has been optimized into a direct jump. There's no
real good way to fix up the reference to the deleted label
! when the label is deleted, so we just allow it here.
!
! After dead code elimination is complete, we do search for
! any REG_LABEL notes which reference deleted labels as a
! sanity check. */
if (inote && GET_CODE (inote) == CODE_LABEL)
{
--- 1542,1548 ----
INSN may reference a deleted label, particularly when a jump
table has been optimized into a direct jump. There's no
real good way to fix up the reference to the deleted label
! when the label is deleted, so we just allow it here. */
if (inote && GET_CODE (inote) == CODE_LABEL)
{