From c172e7aa30a820a11afbbed180115b81e2ea1411 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 17 Jul 2012 21:45:49 +0200 Subject: [PATCH] Workaround for MSVC conversion bug (double -> uint32_t -> int32_t). --- src/lj_opt_fold.c | 7 +++++++ 1 file changed, 7 insertions(+) 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) LJFOLDF(kfold_conv_knum_u32_num) { lua_assert((fins->op2 & IRCONV_TRUNC)); +#ifdef _MSC_VER + { /* Workaround for MSVC bug. */ + volatile uint32_t u = (uint32_t)knumleft; + return INTFOLD((int32_t)u); + } +#else return INTFOLD((int32_t)(uint32_t)knumleft); +#endif } LJFOLD(CONV KNUM IRCONV_I64_NUM)