aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2025-12-06 08:39:11 +0100
committerMike Pall <mike>2025-12-06 08:39:11 +0100
commitb1cd2f83b5d085bb71368b87c91a461be77d4364 (patch)
tree79ce2dd821932bdcaba07b525157e9825c5e0efd /src
parent53d014fea828e67110b88ff2e89dd989b395de58 (diff)
downloadluajit-b1cd2f83b5d085bb71368b87c91a461be77d4364.tar.gz
luajit-b1cd2f83b5d085bb71368b87c91a461be77d4364.tar.bz2
luajit-b1cd2f83b5d085bb71368b87c91a461be77d4364.zip
DUALNUM: Fix narrowing of unary minus.
Reported by Sergey Kaplun. #1418
Diffstat (limited to 'src')
-rw-r--r--src/lj_opt_narrow.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_opt_narrow.c b/src/lj_opt_narrow.c
index 3085c837..a4a1c8ee 100644
--- a/src/lj_opt_narrow.c
+++ b/src/lj_opt_narrow.c
@@ -545,9 +545,9 @@ TRef lj_opt_narrow_unm(jit_State *J, TRef rc, TValue *vc)
545 rc = conv_str_tonum(J, rc, vc); 545 rc = conv_str_tonum(J, rc, vc);
546 if (tref_isinteger(rc)) { 546 if (tref_isinteger(rc)) {
547 uint32_t k = (uint32_t)numberVint(vc); 547 uint32_t k = (uint32_t)numberVint(vc);
548 if ((LJ_DUALNUM || k != 0) && k != 0x80000000u) { 548 if ((tvisint(vc) || k != 0) && k != 0x80000000u) {
549 TRef zero = lj_ir_kint(J, 0); 549 TRef zero = lj_ir_kint(J, 0);
550 if (!LJ_DUALNUM) 550 if (!tvisint(vc))
551 emitir(IRTGI(IR_NE), rc, zero); 551 emitir(IRTGI(IR_NE), rc, zero);
552 return emitir(IRTGI(IR_SUBOV), zero, rc); 552 return emitir(IRTGI(IR_SUBOV), zero, rc);
553 } 553 }