diff options
| author | Mike Pall <mike> | 2025-12-06 08:39:11 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2025-12-06 08:39:11 +0100 |
| commit | b1cd2f83b5d085bb71368b87c91a461be77d4364 (patch) | |
| tree | 79ce2dd821932bdcaba07b525157e9825c5e0efd /src | |
| parent | 53d014fea828e67110b88ff2e89dd989b395de58 (diff) | |
| download | luajit-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.c | 4 |
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 | } |
