From 20b779396394bd6bd46e3b2d4053ea120892c3c7 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sat, 17 Aug 2024 15:17:41 -0400 Subject: Make small integer constants actually constant --- builtins/integers.h | 1 + compile.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/builtins/integers.h b/builtins/integers.h index e6b5b1fb..edfd07dd 100644 --- a/builtins/integers.h +++ b/builtins/integers.h @@ -101,6 +101,7 @@ Int_t Int$sqrt(Int_t i); } while (0) #define I(i) ((int64_t)(i) == (int32_t)(i) ? ((Int_t){.small=((uint64_t)(i)<<2)|1}) : Int64_to_Int(i)) +#define I_small(i) ((Int_t){.small=((uint64_t)(i)<<2)|1}) Int_t Int$slow_plus(Int_t x, Int_t y); Int_t Int$slow_minus(Int_t x, Int_t y); diff --git a/compile.c b/compile.c index e8ed8c79..d792c278 100644 --- a/compile.c +++ b/compile.c @@ -1404,7 +1404,7 @@ CORD compile(env_t *env, ast_t *ast) switch (Match(ast, Int)->bits) { case 0: if (mpz_cmpabs_ui(i, BIGGEST_SMALL_INT) <= 0) { - return CORD_asprintf("I(%s)", str); + return CORD_asprintf("I_small(%s)", str); } else if (mpz_cmp_si(i, INT64_MAX) <= 0 && mpz_cmp_si(i, INT64_MIN) >= 0) { return CORD_asprintf("Int64_to_Int(%s)", str); } else { -- cgit v1.2.3