diff options
Diffstat (limited to 'src/lj_opt_fold.c')
-rw-r--r-- | src/lj_opt_fold.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index 471a4b29..e2d5c517 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
@@ -558,7 +558,10 @@ LJFOLD(CONV KINT IRCONV_I64_INT) | |||
558 | LJFOLD(CONV KINT IRCONV_U64_INT) | 558 | LJFOLD(CONV KINT IRCONV_U64_INT) |
559 | LJFOLDF(kfold_conv_kint_i64) | 559 | LJFOLDF(kfold_conv_kint_i64) |
560 | { | 560 | { |
561 | return INT64FOLD((uint64_t)(int64_t)fleft->i); | 561 | if ((fins->op2 & IRCONV_SEXT)) |
562 | return INT64FOLD((uint64_t)(int64_t)fleft->i); | ||
563 | else | ||
564 | return INT64FOLD((uint64_t)(int64_t)(uint32_t)fleft->i); | ||
562 | } | 565 | } |
563 | 566 | ||
564 | LJFOLD(CONV KINT64 IRCONV_NUM_I64) | 567 | LJFOLD(CONV KINT64 IRCONV_NUM_I64) |