cproc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.nihaljere.xyz/cproc
Log | Files | Refs | Submodules | README | LICENSE

commit 2b95bd2fe11ac8e982fc88d42661bd5cf3f6e475
parent a8961c59fcc0c92806af1853b93c1bc69259ce5f
Author: Michael Forney <mforney@mforney.org>
Date:   Fri,  5 Apr 2019 19:56:04 -0700

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.

Diffstat:
Mexpr.c | 4++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 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);