diff options
author | Mike Pall <mike> | 2013-02-22 20:39:25 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2013-02-23 01:19:00 +0100 |
commit | b359ce804bb52585815fc52d7846202db4341acb (patch) | |
tree | 47ce07e6dc9403ce9e6b775c8d2f6d77360c6605 /src/lj_crecord.c | |
parent | fdc0ce8debd46bdf35aaec320eef3105055e90b5 (diff) | |
download | luajit-b359ce804bb52585815fc52d7846202db4341acb.tar.gz luajit-b359ce804bb52585815fc52d7846202db4341acb.tar.bz2 luajit-b359ce804bb52585815fc52d7846202db4341acb.zip |
Remove obsolete non-truncating number to integer conversions.
Diffstat (limited to 'src/lj_crecord.c')
-rw-r--r-- | src/lj_crecord.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/lj_crecord.c b/src/lj_crecord.c index b60eb7b3..a5d896eb 100644 --- a/src/lj_crecord.c +++ b/src/lj_crecord.c | |||
@@ -446,7 +446,7 @@ static TRef crec_ct_ct(jit_State *J, CType *d, CType *s, TRef dp, TRef sp, | |||
446 | /* fallthrough */ | 446 | /* fallthrough */ |
447 | case CCX(I, F): | 447 | case CCX(I, F): |
448 | if (dt == IRT_CDATA || st == IRT_CDATA) goto err_nyi; | 448 | if (dt == IRT_CDATA || st == IRT_CDATA) goto err_nyi; |
449 | sp = emitconv(sp, dsize < 4 ? IRT_INT : dt, st, IRCONV_TRUNC|IRCONV_ANY); | 449 | sp = emitconv(sp, dsize < 4 ? IRT_INT : dt, st, IRCONV_ANY); |
450 | goto xstore; | 450 | goto xstore; |
451 | case CCX(I, P): | 451 | case CCX(I, P): |
452 | case CCX(I, A): | 452 | case CCX(I, A): |
@@ -522,7 +522,7 @@ static TRef crec_ct_ct(jit_State *J, CType *d, CType *s, TRef dp, TRef sp, | |||
522 | if (st == IRT_CDATA) goto err_nyi; | 522 | if (st == IRT_CDATA) goto err_nyi; |
523 | /* The signed conversion is cheaper. x64 really has 47 bit pointers. */ | 523 | /* The signed conversion is cheaper. x64 really has 47 bit pointers. */ |
524 | sp = emitconv(sp, (LJ_64 && dsize == 8) ? IRT_I64 : IRT_U32, | 524 | sp = emitconv(sp, (LJ_64 && dsize == 8) ? IRT_I64 : IRT_U32, |
525 | st, IRCONV_TRUNC|IRCONV_ANY); | 525 | st, IRCONV_ANY); |
526 | goto xstore; | 526 | goto xstore; |
527 | 527 | ||
528 | /* Destination is an array. */ | 528 | /* Destination is an array. */ |
@@ -1229,7 +1229,7 @@ static TRef crec_arith_int64(jit_State *J, TRef *sp, CType **s, MMS mm) | |||
1229 | for (i = 0; i < 2; i++) { | 1229 | for (i = 0; i < 2; i++) { |
1230 | IRType st = tref_type(sp[i]); | 1230 | IRType st = tref_type(sp[i]); |
1231 | if (st == IRT_NUM || st == IRT_FLOAT) | 1231 | if (st == IRT_NUM || st == IRT_FLOAT) |
1232 | sp[i] = emitconv(sp[i], dt, st, IRCONV_TRUNC|IRCONV_ANY); | 1232 | sp[i] = emitconv(sp[i], dt, st, IRCONV_ANY); |
1233 | else if (!(st == IRT_I64 || st == IRT_U64)) | 1233 | else if (!(st == IRT_I64 || st == IRT_U64)) |
1234 | sp[i] = emitconv(sp[i], dt, IRT_INT, | 1234 | sp[i] = emitconv(sp[i], dt, IRT_INT, |
1235 | (s[i]->info & CTF_UNSIGNED) ? 0 : IRCONV_SEXT); | 1235 | (s[i]->info & CTF_UNSIGNED) ? 0 : IRCONV_SEXT); |
@@ -1297,15 +1297,14 @@ static TRef crec_arith_ptr(jit_State *J, TRef *sp, CType **s, MMS mm) | |||
1297 | CTypeID id; | 1297 | CTypeID id; |
1298 | #if LJ_64 | 1298 | #if LJ_64 |
1299 | if (t == IRT_NUM || t == IRT_FLOAT) | 1299 | if (t == IRT_NUM || t == IRT_FLOAT) |
1300 | tr = emitconv(tr, IRT_INTP, t, IRCONV_TRUNC|IRCONV_ANY); | 1300 | tr = emitconv(tr, IRT_INTP, t, IRCONV_ANY); |
1301 | else if (!(t == IRT_I64 || t == IRT_U64)) | 1301 | else if (!(t == IRT_I64 || t == IRT_U64)) |
1302 | tr = emitconv(tr, IRT_INTP, IRT_INT, | 1302 | tr = emitconv(tr, IRT_INTP, IRT_INT, |
1303 | ((t - IRT_I8) & 1) ? 0 : IRCONV_SEXT); | 1303 | ((t - IRT_I8) & 1) ? 0 : IRCONV_SEXT); |
1304 | #else | 1304 | #else |
1305 | if (!tref_typerange(sp[1], IRT_I8, IRT_U32)) { | 1305 | if (!tref_typerange(sp[1], IRT_I8, IRT_U32)) { |
1306 | tr = emitconv(tr, IRT_INTP, t, | 1306 | tr = emitconv(tr, IRT_INTP, t, |
1307 | (t == IRT_NUM || t == IRT_FLOAT) ? | 1307 | (t == IRT_NUM || t == IRT_FLOAT) ? IRCONV_ANY : 0); |
1308 | IRCONV_TRUNC|IRCONV_ANY : 0); | ||
1309 | } | 1308 | } |
1310 | #endif | 1309 | #endif |
1311 | tr = emitir(IRT(IR_MUL, IRT_INTP), tr, lj_ir_kintp(J, sz)); | 1310 | tr = emitir(IRT(IR_MUL, IRT_INTP), tr, lj_ir_kintp(J, sz)); |