Bläddra i källkod

fixed type of sizeof (decreases size!)
fixed bug with typedef of function with block scope

eck 34 år sedan
förälder
incheckning
5579494979

+ 2 - 0
lang/cem/cemcom.ansi/cemcom.1

@@ -85,6 +85,8 @@ suppress warning messages.
 suppress stricts.
 .IP \fB\-a\fR
 suppress warnings and stricts.
+.IP \fB\-o\fR
+suppress warnings and stricts about old-style.
 .IP \fB\-\-\fItext\fR
 .br
 where \fItext\fR can be either of the above or

+ 5 - 27
lang/cem/cemcom.ansi/expr.c

@@ -294,39 +294,17 @@ fill_int_expr(ex, ivalue, fund)
 	case INT:
 		ex->ex_type = int_type;
 		break;
-	case INTEGER:
-		if (ivalue >= 0 && ivalue <= max_int) {
-			ex->ex_type = int_type;
-			break;
-		}
-		/*FALL THROUGH*/
+	case UNSIGNED:
+		ex->ex_type = uint_type;
+		break;
 	case LONG:
-		ex->ex_type = 
-			(ivalue & (1L << (8*long_size - 1))) ? ulong_type
-				: long_type;
+		ex->ex_type =  long_type;
 		break;
 	case ULONG:
 		ex->ex_type = ulong_type;
 		break;
-	case UNSIGNED:
-		/*	We cannot make a test like
-				ivalue <= max_unsigned
-			because, if
-				sizeof(arith) == int_size
-			holds, max_unsigned may be a negative arith in
-			which case the comparison results in an unexpected
-			answer.
-		*/
-		ex->ex_type = 
-			(ivalue & ~max_int) ?
-			  ( (ivalue & ~max_unsigned) ? 
-			      ( ivalue & (1L<<(8*long_size-1)) ?
-					ulong_type : long_type
-			      ) : uint_type
-			  ) : int_type;
-		break;
 	default:
-		crash("(intexpr) bad fund %s\n", symbol2str(fund));
+		crash("(fill_int_expr) bad fund %s\n", symbol2str(fund));
 		/*NOTREACHED*/
 	}
 	ex->ex_class = Value;

+ 1 - 1
lang/cem/cemcom.ansi/idf.c

@@ -250,7 +250,7 @@ declare_idf(ds, dc, lvl)
 		if (lvl != L_GLOBAL)  {		/* 3.5.1 */
 			if (sc == 0)
 				sc = GLOBAL;
-			else if (sc != EXTERN) {
+			else if (sc != EXTERN && sc != TYPEDEF) {
 				error("illegal storage class %s for function with block-scope"
 					, symbol2str(sc));
 				ds->ds_sc = sc = EXTERN;

+ 1 - 1
lang/cem/cemcom.ansi/make.tokfile

@@ -1,6 +1,6 @@
 cat <<'--EOT--'
 /* Generated by make.tokfile */
-/* $Header: */
+/* $Header$ */
 --EOT--
 
 sed '

+ 1 - 0
lang/cem/cemcom.ansi/options

@@ -12,6 +12,7 @@ m	generate file.o: file1.h format dependency lines
 M	set identifier length
 n	don't generate register messages
 L	don't generate linenumbers and filename indications
+o	no warnings or stricts about normal old-style constuctions
 p	trace
 P	in running the preprocessor do not output '# line' lines
 R	restricted C