aboutsummaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
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);
}