diff options
author | Mike Pall <mike> | 2021-05-24 22:25:26 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2021-05-24 22:25:26 +0200 |
commit | 2801500a26084491ae035170cad4700513790890 (patch) | |
tree | 88e7bb1a4c5ba830ca30bc1f0e14aa8d31b00cd4 | |
parent | 44684fa71d8af6fa8b3051c7d763bbfdcf7915d7 (diff) | |
download | luajit-2801500a26084491ae035170cad4700513790890.tar.gz luajit-2801500a26084491ae035170cad4700513790890.tar.bz2 luajit-2801500a26084491ae035170cad4700513790890.zip |
Fix use-def analysis for BC_VARG.
Reported by Ryan Lucia.
-rw-r--r-- | src/lj_snap.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lj_snap.c b/src/lj_snap.c index fd7d806a..0c5e8e90 100644 --- a/src/lj_snap.c +++ b/src/lj_snap.c | |||
@@ -238,7 +238,7 @@ static BCReg snap_usedef(jit_State *J, uint8_t *udf, | |||
238 | if (!(op == BC_ISTC || op == BC_ISFC)) DEF_SLOT(bc_a(ins)); | 238 | if (!(op == BC_ISTC || op == BC_ISFC)) DEF_SLOT(bc_a(ins)); |
239 | break; | 239 | break; |
240 | case BCMbase: | 240 | case BCMbase: |
241 | if (op >= BC_CALLM && op <= BC_VARG) { | 241 | if (op >= BC_CALLM && op <= BC_ITERN) { |
242 | BCReg top = (op == BC_CALLM || op == BC_CALLMT || bc_c(ins) == 0) ? | 242 | BCReg top = (op == BC_CALLM || op == BC_CALLMT || bc_c(ins) == 0) ? |
243 | maxslot : (bc_a(ins) + bc_c(ins)); | 243 | maxslot : (bc_a(ins) + bc_c(ins)); |
244 | s = bc_a(ins) - ((op == BC_ITERC || op == BC_ITERN) ? 3 : 0); | 244 | s = bc_a(ins) - ((op == BC_ITERC || op == BC_ITERN) ? 3 : 0); |
@@ -248,6 +248,8 @@ static BCReg snap_usedef(jit_State *J, uint8_t *udf, | |||
248 | for (s = 0; s < bc_a(ins); s++) DEF_SLOT(s); | 248 | for (s = 0; s < bc_a(ins); s++) DEF_SLOT(s); |
249 | return 0; | 249 | return 0; |
250 | } | 250 | } |
251 | } else if (op == BC_VARG) { | ||
252 | return maxslot; /* NYI: punt. */ | ||
251 | } else if (op == BC_KNIL) { | 253 | } else if (op == BC_KNIL) { |
252 | for (s = bc_a(ins); s <= bc_d(ins); s++) DEF_SLOT(s); | 254 | for (s = bc_a(ins); s <= bc_d(ins); s++) DEF_SLOT(s); |
253 | } else if (op == BC_TSETM) { | 255 | } else if (op == BC_TSETM) { |