generate CSA for empty case statement, replaced an #ifdef that was on the wrong spot
authorceriel <none@none>
Fri, 13 Nov 1987 16:21:33 +0000 (16:21 +0000)
committerceriel <none@none>
Fri, 13 Nov 1987 16:21:33 +0000 (16:21 +0000)
lang/cem/cemcom/options.c
lang/cem/cemcom/switch.c

index b333734..66dda1a 100644 (file)
@@ -112,6 +112,7 @@ deleted, is now a debug-flag
        }
 
 #ifdef ___XXX___
+deleted, is now a debug-flag
        case 'E' :      /* run preprocessor only, with #<int>   */
 #ifndef NOPP
                options['E'] = 1;
@@ -161,6 +162,7 @@ deleted, is now a debug-flag
                break;
 
 #ifdef ___XXX___
+deleted, is now a debug-flag
        case 'P' :      /* run preprocessor stand-alone, without #'s    */
 #ifndef NOPP
                options['E'] = 1;
@@ -171,8 +173,8 @@ deleted, is now a debug-flag
                break;
 #endif ___XXX___
 
-#ifdef USE_TMP
        case 'T' : {
+#ifdef USE_TMP
                extern char *C_tmpdir;
                if (*text)
                        C_tmpdir = text;
index 80b6a96..3f4f63a 100644 (file)
@@ -33,7 +33,7 @@ compact(nr, low, up)
        */
        arith diff = up - low;
 
-       return (nr != 0 && diff >= 0 && diff / nr <= (DENSITY - 1));
+       return (nr == 0 || (diff >= 0 && diff / nr <= (DENSITY - 1)));
 }
 
 static struct switch_hdr *switch_stack = 0;
@@ -106,7 +106,8 @@ code_endswitch()
                C_rom_cst(sh->sh_lowerbd);
                C_rom_cst(sh->sh_upperbd - sh->sh_lowerbd);
                ce = sh->sh_entries;
-               for (val = sh->sh_lowerbd; val <= sh->sh_upperbd; val++) {
+               if (sh->sh_nrofentries)
+                   for (val = sh->sh_lowerbd; val <= sh->sh_upperbd; val++) {
                        ASSERT(ce);
                        if (val == ce->ce_value) {
                                C_rom_ilb(ce->ce_label);