aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lj_crecord.c2
-rw-r--r--src/lj_opt_fold.c4
2 files changed, 1 insertions, 5 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 4adfefe63..59420184a 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -1249,7 +1249,7 @@ static TRef crec_arith_int64(jit_State *J, TRef *sp, CType **s, MMS mm)
1249 sp[i] = emitconv(sp[i], dt, st, IRCONV_TRUNC|IRCONV_ANY); 1249 sp[i] = emitconv(sp[i], dt, st, IRCONV_TRUNC|IRCONV_ANY);
1250 else if (!(st == IRT_I64 || st == IRT_U64)) 1250 else if (!(st == IRT_I64 || st == IRT_U64))
1251 sp[i] = emitconv(sp[i], dt, IRT_INT, 1251 sp[i] = emitconv(sp[i], dt, IRT_INT,
1252 (s[i]->info & CTF_UNSIGNED) ? 0 : IRCONV_SEXT); 1252 ((st - IRT_I8) & 1) ? 0 : IRCONV_SEXT);
1253 } 1253 }
1254 if (mm < MM_add) { 1254 if (mm < MM_add) {
1255 comp: 1255 comp:
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c
index b8676a577..03d869d00 100644
--- a/src/lj_opt_fold.c
+++ b/src/lj_opt_fold.c
@@ -956,14 +956,10 @@ LJFOLDF(simplify_conv_i64_num)
956 fins->op2 = ((IRT_I64<<5)|IRT_INT|IRCONV_SEXT); 956 fins->op2 = ((IRT_I64<<5)|IRT_INT|IRCONV_SEXT);
957 return RETRYFOLD; 957 return RETRYFOLD;
958 } else if ((fleft->op2 & IRCONV_SRCMASK) == IRT_U32) { 958 } else if ((fleft->op2 & IRCONV_SRCMASK) == IRT_U32) {
959#if LJ_TARGET_X64
960 return fleft->op1;
961#else
962 /* Reduce to a zero-extension. */ 959 /* Reduce to a zero-extension. */
963 fins->op1 = fleft->op1; 960 fins->op1 = fleft->op1;
964 fins->op2 = (IRT_I64<<5)|IRT_U32; 961 fins->op2 = (IRT_I64<<5)|IRT_U32;
965 return RETRYFOLD; 962 return RETRYFOLD;
966#endif
967 } 963 }
968 return NEXTFOLD; 964 return NEXTFOLD;
969} 965}