From 8fc459e811f642af9c09a5573d1f971988dc8516 Mon Sep 17 00:00:00 2001 From: ceriel Date: Thu, 7 Jul 1988 15:02:47 +0000 Subject: [PATCH] fix: was wrong with constants causing overflow --- lang/cem/cemcom/expr.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lang/cem/cemcom/expr.c b/lang/cem/cemcom/expr.c index f7b90bf67..788f26be5 100644 --- a/lang/cem/cemcom/expr.c +++ b/lang/cem/cemcom/expr.c @@ -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)); } -- 2.34.1