fix: was wrong with constants causing overflow
authorceriel <none@none>
Thu, 7 Jul 1988 15:02:47 +0000 (15:02 +0000)
committerceriel <none@none>
Thu, 7 Jul 1988 15:02:47 +0000 (15:02 +0000)
lang/cem/cemcom/expr.c

index f7b90bf..788f26b 100644 (file)
@@ -273,6 +273,12 @@ 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 LONG:
                ex->ex_type = 
                        (ivalue & (1L << (8*long_size - 1))) ? ulong_type
@@ -296,11 +302,6 @@ fill_int_expr(ex, ivalue, fund)
                              ) : uint_type
                          ) : int_type;
                break;
-       case INTEGER:
-               ex->ex_type = (ivalue <= max_int) ? int_type 
-                       : (ivalue & (1L << (8*long_size - 1))) ? ulong_type
-                               : long_type;
-               break;
        default:
                crash("(intexpr) bad fund %s\n", symbol2str(fund));
        }