From 19b84009b2702fc3a1993e692bd79eb3b3a50b76 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 14 Feb 2011 23:02:16 +0100 Subject: [PATCH] Fix type mismatch in XSTORE forwarding. --- src/lj_opt_mem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lj_opt_mem.c b/src/lj_opt_mem.c index 6062be70..40064639 100644 --- a/src/lj_opt_mem.c +++ b/src/lj_opt_mem.c @@ -689,8 +689,8 @@ retry: if (st == IRT_I8 || st == IRT_I16) { /* Trunc + sign-extend. */ st |= IRCONV_SEXT; } else if (st == IRT_U8 || st == IRT_U16) { /* Trunc + zero-extend. */ - } else if (st == IRT_INT && irt_isu32(IR(store->op2)->t)) { - st = IRT_U32; /* Needs dummy CONV.int.u32. */ + } else if (st == IRT_INT && !irt_isint(IR(store->op2)->t)) { + st = irt_type(IR(store->op2)->t); /* Needs dummy CONV.int.*. */ } else { /* I64/U64 are boxed, U32 is hidden behind a CONV.num.u32. */ goto store_fwd; }