two fixes to the lint part: unsigned constant compares, and initializations in switch...
authorceriel <none@none>
Mon, 26 Feb 1990 11:35:15 +0000 (11:35 +0000)
committerceriel <none@none>
Mon, 26 Feb 1990 11:35:15 +0000 (11:35 +0000)
lang/cem/cemcom/Makefile
lang/cem/cemcom/domacro.c
lang/cem/cemcom/l_misc.c
lang/cem/cemcom/switch.c

index b34a498..9b34a12 100644 (file)
@@ -394,6 +394,7 @@ expr.o: sizes.h
 expr.o: spec_arith.h
 expr.o: target_sizes.h
 expr.o: type.h
+expr.o: use_tmp.h
 ch7.o: Lpars.h
 ch7.o: arith.h
 ch7.o: assert.h
@@ -743,6 +744,7 @@ switch.o: density.h
 switch.o: expr.h
 switch.o: idf.h
 switch.o: label.h
+switch.o: lint.h
 switch.o: noRoption.h
 switch.o: nobitfield.h
 switch.o: nofloat.h
index 0f17f83..7c2006d 100644 (file)
@@ -571,7 +571,7 @@ get_text(formals, length)
                        LoadChar(c);
                        if (c == '*') {
                                skipcomment();
-                               text[pos++] = ' ';
+                               /* text[pos++] = ' '; ??? Why ??? */
                                LoadChar(c);
                        }
                        else
index 6117832..22947d2 100644 (file)
@@ -362,7 +362,7 @@ lint_relop(left, right, oper)
        &&      right->ex_class == Value
        &&      right->VL_CLASS == Const
        ) {
-               if (right->VL_VALUE < 0) {
+               if (!right->ex_type->tp_unsigned && right->VL_VALUE < 0) {
                        warning("unsigned compared to negative constant");
                }
                if (right->VL_VALUE == 0) {
index 859766c..f534118 100644 (file)
@@ -21,6 +21,7 @@
 #include       "expr.h"
 #include       "type.h"
 #include       "noRoption.h"
+#include       "lint.h"
 
 extern char options[];
 
@@ -80,6 +81,9 @@ code_startswitch(expp)
        sh->sh_lowerbd = sh->sh_upperbd = (arith)0;     /* immaterial ??? */
        sh->sh_entries = (struct case_entry *) 0; /* case-entry list    */
        sh->sh_expr = *expp;
+#ifdef LINT
+       code_expr(sh->sh_expr, RVAL, TRUE, NO_LABEL, NO_LABEL);
+#endif
        sh->next = switch_stack;        /* push onto switch-stack       */
        switch_stack = sh;
        C_bra(l_table);                 /* goto start of switch_table   */
@@ -96,7 +100,9 @@ code_endswitch()
        C_bra(sh->sh_break);            /* skip the switch table now    */
        C_df_ilb(sh->sh_table);         /* switch table entry           */
        /* evaluate the switch expr.    */
+#ifndef LINT
        code_expr(sh->sh_expr, RVAL, TRUE, NO_LABEL, NO_LABEL);
+#endif
        tablabel = data_label();        /* the rom must have a label    */
        C_df_dlb(tablabel);
        C_rom_ilb(sh->sh_default);