This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Third prerelease of gcc-2.95.3 available


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)";


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]