From 2b95bd2fe11ac8e982fc88d42661bd5cf3f6e475 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Fri, 5 Apr 2019 19:56:04 -0700 Subject: expr: Just use `unsigned long long` when calculating integer constant type Ideally, we shouldn't use uint64_t at all since it is not guaranteed to exist, and this case is easy enough to fix. --- expr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'expr.c') diff --git a/expr.c b/expr.c index 6af09c8..f8b2c05 100644 --- a/expr.c +++ b/expr.c @@ -216,7 +216,7 @@ mkbinaryexpr(struct location *loc, enum tokenkind op, struct expr *l, struct exp } static struct type * -inttype(uint64_t val, bool decimal, char *end) +inttype(unsigned long long val, bool decimal, char *end) { static struct { struct type *type; @@ -245,7 +245,7 @@ inttype(uint64_t val, bool decimal, char *end) step = i % 2 || decimal ? 2 : 1; for (; i < LEN(limits); i += step) { t = limits[i].type; - if (val <= (uint64_t)-1 >> (8 - t->size << 3) + t->basic.issigned) + if (val <= 0xffffffffffffffffu >> (8 - t->size << 3) + t->basic.issigned) return t; } error(&tok.loc, "no suitable type for constant '%s'", tok.lit); -- cgit v1.2.3