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 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 | } |
