diff options
| -rw-r--r-- | src/lj_crecord.c | 2 | ||||
| -rw-r--r-- | src/lj_opt_fold.c | 4 |
2 files changed, 1 insertions, 5 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c index a8ea419a8..7899720e7 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c | |||
| @@ -1395,7 +1395,7 @@ static TRef crec_arith_int64(jit_State *J, TRef *sp, CType **s, MMS mm) | |||
| 1395 | sp[i] = emitconv(sp[i], dt, st, IRCONV_ANY); | 1395 | sp[i] = emitconv(sp[i], dt, st, IRCONV_ANY); |
| 1396 | else if (!(st == IRT_I64 || st == IRT_U64)) | 1396 | else if (!(st == IRT_I64 || st == IRT_U64)) |
| 1397 | sp[i] = emitconv(sp[i], dt, IRT_INT, | 1397 | sp[i] = emitconv(sp[i], dt, IRT_INT, |
| 1398 | (s[i]->info & CTF_UNSIGNED) ? 0 : IRCONV_SEXT); | 1398 | ((st - IRT_I8) & 1) ? 0 : IRCONV_SEXT); |
| 1399 | } | 1399 | } |
| 1400 | if (mm < MM_add) { | 1400 | if (mm < MM_add) { |
| 1401 | comp: | 1401 | comp: |
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index cc2b9098c..092e2176e 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
| @@ -1144,14 +1144,10 @@ LJFOLDF(simplify_conv_i64_num) | |||
| 1144 | fins->op2 = ((IRT_I64<<5)|IRT_INT|IRCONV_SEXT); | 1144 | fins->op2 = ((IRT_I64<<5)|IRT_INT|IRCONV_SEXT); |
| 1145 | return RETRYFOLD; | 1145 | return RETRYFOLD; |
| 1146 | } else if ((fleft->op2 & IRCONV_SRCMASK) == IRT_U32) { | 1146 | } else if ((fleft->op2 & IRCONV_SRCMASK) == IRT_U32) { |
| 1147 | #if LJ_TARGET_X64 | ||
| 1148 | return fleft->op1; | ||
| 1149 | #else | ||
| 1150 | /* Reduce to a zero-extension. */ | 1147 | /* Reduce to a zero-extension. */ |
| 1151 | fins->op1 = fleft->op1; | 1148 | fins->op1 = fleft->op1; |
| 1152 | fins->op2 = (IRT_I64<<5)|IRT_U32; | 1149 | fins->op2 = (IRT_I64<<5)|IRT_U32; |
| 1153 | return RETRYFOLD; | 1150 | return RETRYFOLD; |
| 1154 | #endif | ||
| 1155 | } | 1151 | } |
| 1156 | return NEXTFOLD; | 1152 | return NEXTFOLD; |
| 1157 | } | 1153 | } |
