aboutsummaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-08-13 14:13:02 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-08-13 14:13:02 -0400
commit5a0502bdf5da0b1cdb91fb1d0dfa08b4c4a4db0b (patch)
treed461fec6453e8e99cefabd712ee27091528731ea /compile.c
parent148782e61ba4efbf2981e7d9e18279e92054e149 (diff)
Fix some edge cases
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/compile.c b/compile.c
index 8c7dc6df..1053b739 100644
--- a/compile.c
+++ b/compile.c
@@ -1386,8 +1386,10 @@ CORD compile(env_t *env, ast_t *ast)
switch (Match(ast, Int)->bits) {
case 0:
- if ((mpz_cmp_si(i, BIGGEST_SMALL_INT) < 0) && (mpz_cmp_si(i, -BIGGEST_SMALL_INT) > 0)) {
+ if (mpz_cmpabs_ui(i, BIGGEST_SMALL_INT) <= 0) {
return CORD_asprintf("I(%s)", str);
+ } else if (mpz_cmp_si(i, INT64_MAX) <= 0 && mpz_cmp_si(i, INT64_MIN) >= 0) {
+ return CORD_asprintf("Int$from_i64(%s)", str);
} else {
return CORD_asprintf("Int$from_text(\"%s\")", str);
}