diff options
author | Mike Pall <mike> | 2011-02-14 23:02:16 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-02-14 23:02:16 +0100 |
commit | 19b84009b2702fc3a1993e692bd79eb3b3a50b76 (patch) | |
tree | baead6c568fee0ad760104a4d577b1ba9b8ff4a2 | |
parent | 97d84111fd38ccd61897c21b05a10bacf4e3c829 (diff) | |
download | luajit-19b84009b2702fc3a1993e692bd79eb3b3a50b76.tar.gz luajit-19b84009b2702fc3a1993e692bd79eb3b3a50b76.tar.bz2 luajit-19b84009b2702fc3a1993e692bd79eb3b3a50b76.zip |
Fix type mismatch in XSTORE forwarding.
-rw-r--r-- | src/lj_opt_mem.c | 4 |
1 files 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: | |||
689 | if (st == IRT_I8 || st == IRT_I16) { /* Trunc + sign-extend. */ | 689 | if (st == IRT_I8 || st == IRT_I16) { /* Trunc + sign-extend. */ |
690 | st |= IRCONV_SEXT; | 690 | st |= IRCONV_SEXT; |
691 | } else if (st == IRT_U8 || st == IRT_U16) { /* Trunc + zero-extend. */ | 691 | } else if (st == IRT_U8 || st == IRT_U16) { /* Trunc + zero-extend. */ |
692 | } else if (st == IRT_INT && irt_isu32(IR(store->op2)->t)) { | 692 | } else if (st == IRT_INT && !irt_isint(IR(store->op2)->t)) { |
693 | st = IRT_U32; /* Needs dummy CONV.int.u32. */ | 693 | st = irt_type(IR(store->op2)->t); /* Needs dummy CONV.int.*. */ |
694 | } else { /* I64/U64 are boxed, U32 is hidden behind a CONV.num.u32. */ | 694 | } else { /* I64/U64 are boxed, U32 is hidden behind a CONV.num.u32. */ |
695 | goto store_fwd; | 695 | goto store_fwd; |
696 | } | 696 | } |