To: None <>
From: der Mouse <mouse@Collatz.McRCIM.McGill.EDU>
List: current-users
Date: 04/13/1996 12:29:58
>> There has been quite a bit of talk about the optimization code in
>> gcc 2.7.2 and its guilt in a number of problems compiling and using
>> the kernel.
> "A number of problems"?  This statement startles me.

Well, I had to remove -O from the kernel Makefiles entirely on my sun3
because it kept bugchecking.  And now, even without -O, I get

cc: Internal compiler error: program cc1 got fatal signal 6
*** Error code 1


At first I took this for another instance of the "everything dumps
core" bug, but investigation proved it was not so.

kern_synch.c is

/*      $NetBSD: kern_synch.c,v 1.35 1996/02/09 18:59:50 christos Exp $ */

with the following patch applied:

--- OLD/sys/kern/kern_synch.c	Thu Jan  1 00:00:00 1970
+++ NEW/sys/kern/kern_synch.c	Thu Jan  1 00:00:00 1970
@@ -599,8 +599,8 @@
 				rlim->rlim_cur += 5;
-	if (s > 10 * 60 && p->p_ucred->cr_uid && p->p_nice == NZERO) {
-		p->p_nice = NZERO + 4;
+	if (autonicetime && s > autonicetime && p->p_ucred->cr_uid && p->p_nice == NZERO) {
+		p->p_nice = autoniceval;

The resulting file has md5 checksum e66c3128adec286dba586ec32673a6cf.
I see the same problem with the unpatched file, md5 checksum
a952c379b902b148121688fa4744df26.  cc --version reports "2.7.2", and it
has been patched to disable the signed-versus-unsigned warning:

--- OLD/gnu/usr.bin/gcc/common/c-typeck.c	Thu Jan  1 00:00:00 1970
+++ NEW/gnu/usr.bin/gcc/common/c-typeck.c	Thu Jan  1 00:00:00 1970
@@ -2492,6 +2492,7 @@
 	      /* Do the checking based on the original operand trees, so that
 		 casts will be considered, but default promotions won't be.  */
+#if 0 /* this is more obnoxious than useful, especially without a way to turn it off */
 	      /* Do not warn if the comparison is being done in a signed type,
 		 since the signed type will only be chosen if it can represent
 		 all the values of the unsigned type.  */
@@ -2519,6 +2520,7 @@
 		/* OK */;
 		warning ("comparison between signed and unsigned");
 	      /* Warn if two unsigned values are being compared in a size
 		 larger than their original size, and one (and only one) is the

I'm going to see if an up-to-date source tree exhibits the same

					der Mouse