This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Third prerelease of gcc-2.95.3 available
- To: David Edelsohn <dje at watson dot ibm dot com>
- Subject: Re: Third prerelease of gcc-2.95.3 available
- From: Bernd Schmidt <bernds at cambridge dot redhat dot com>
- Date: Fri, 26 Jan 2001 13:26:52 +0000 (GMT)
- Cc: <gcc at gcc dot gnu dot org>
On Thu, 25 Jan 2001, David Edelsohn wrote:
> I am sorry to report that I already have found a regression in
> this new test release:
>
> 990801-1.c: In function `token':
> 990801-1.c:25: Internal compiler error in `build_insn_chain', at global.c:1756
> Please submit a full bug report.
> See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
Does this patch fix your problems?
Bernd
Index: flow.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/flow.c,v
retrieving revision 1.120.4.7
diff -u -p -r1.120.4.7 flow.c
--- flow.c 2001/01/25 14:03:08 1.120.4.7
+++ flow.c 2001/01/26 13:25:59
@@ -2744,15 +2744,24 @@ propagate_block (old, first, last, final
{
if (REG_NOTE_KIND (inote) == REG_LABEL)
{
+ int n_forced;
rtx label = XEXP (inote, 0);
rtx next;
LABEL_NUSES (label)--;
+ /* The label may be forced if it has been put in the
+ constant pool. We can't delete it in this case, but
+ we still must discard a jump table following it. */
+ n_forced = 0;
+ for (next = forced_labels; next; next = XEXP (next, 1))
+ if (XEXP (next, 0) == label)
+ n_forced++;
+
/* If this label was attached to an ADDR_VEC, it's
safe to delete the ADDR_VEC. In fact, it's pretty much
mandatory to delete it, because the ADDR_VEC may
be referencing labels that no longer exist. */
- if (LABEL_NUSES (label) == 0
+ if (LABEL_NUSES (label) == n_forced
&& (next = next_nonnote_insn (label)) != NULL
&& GET_CODE (next) == JUMP_INSN
&& (GET_CODE (PATTERN (next)) == ADDR_VEC
Index: version.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/version.c,v
retrieving revision 1.498.4.90
diff -u -p -r1.498.4.90 version.c
--- version.c 2001/01/25 14:25:44 1.498.4.90
+++ version.c 2001/01/26 13:25:59
@@ -1 +1 @@
-char *version_string = "2.95.3 20010125 (prerelease)";
+char *version_string = "2.95.3 20010126 (prerelease)";