diff options
author | Mike Pall <mike> | 2012-07-17 21:45:49 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-07-17 21:45:49 +0200 |
commit | c172e7aa30a820a11afbbed180115b81e2ea1411 (patch) | |
tree | c0b65b6702d5fb82df59be28b05a219c483ccfd6 /src/lj_opt_fold.c | |
parent | 08d8ec0648daaf9a80e6a734630cec3c877377b3 (diff) | |
download | luajit-c172e7aa30a820a11afbbed180115b81e2ea1411.tar.gz luajit-c172e7aa30a820a11afbbed180115b81e2ea1411.tar.bz2 luajit-c172e7aa30a820a11afbbed180115b81e2ea1411.zip |
Workaround for MSVC conversion bug (double -> uint32_t -> int32_t).
Diffstat (limited to 'src/lj_opt_fold.c')
-rw-r--r-- | src/lj_opt_fold.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lj_opt_fold.c b/src/lj_opt_fold.c index aa80a6aa..e4818a92 100644 --- a/src/lj_opt_fold.c +++ b/src/lj_opt_fold.c | |||
@@ -627,7 +627,14 @@ LJFOLD(CONV KNUM IRCONV_U32_NUM) | |||
627 | LJFOLDF(kfold_conv_knum_u32_num) | 627 | LJFOLDF(kfold_conv_knum_u32_num) |
628 | { | 628 | { |
629 | lua_assert((fins->op2 & IRCONV_TRUNC)); | 629 | lua_assert((fins->op2 & IRCONV_TRUNC)); |
630 | #ifdef _MSC_VER | ||
631 | { /* Workaround for MSVC bug. */ | ||
632 | volatile uint32_t u = (uint32_t)knumleft; | ||
633 | return INTFOLD((int32_t)u); | ||
634 | } | ||
635 | #else | ||
630 | return INTFOLD((int32_t)(uint32_t)knumleft); | 636 | return INTFOLD((int32_t)(uint32_t)knumleft); |
637 | #endif | ||
631 | } | 638 | } |
632 | 639 | ||
633 | LJFOLD(CONV KNUM IRCONV_I64_NUM) | 640 | LJFOLD(CONV KNUM IRCONV_I64_NUM) |