diff options
Diffstat (limited to 'src/lj_cconv.c')
-rw-r--r-- | src/lj_cconv.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_cconv.c b/src/lj_cconv.c index e5abf3e9..642a4852 100644 --- a/src/lj_cconv.c +++ b/src/lj_cconv.c | |||
@@ -335,7 +335,8 @@ void lj_cconv_ct_ct(CTState *cts, CType *d, CType *s, | |||
335 | 335 | ||
336 | case CCX(P, F): | 336 | case CCX(P, F): |
337 | if (!(flags & CCF_CAST) || !(flags & CCF_FROMTV)) goto err_conv; | 337 | if (!(flags & CCF_CAST) || !(flags & CCF_FROMTV)) goto err_conv; |
338 | dinfo = CTINFO(CT_NUM, CTF_UNSIGNED); | 338 | /* The signed conversion is cheaper. x64 really has 47 bit pointers. */ |
339 | dinfo = CTINFO(CT_NUM, (LJ_64 && dsize == 8) ? 0 : CTF_UNSIGNED); | ||
339 | goto conv_I_F; | 340 | goto conv_I_F; |
340 | 341 | ||
341 | case CCX(P, P): | 342 | case CCX(P, P): |