mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Don't access dangling reference to reallocated IR.
This commit is contained in:
parent
e94150877d
commit
416abff90d
@ -1246,8 +1246,10 @@ static void asm_phi_fixup(ASMState *as)
|
|||||||
Reg r = rset_picktop(work);
|
Reg r = rset_picktop(work);
|
||||||
IRRef lref = as->phireg[r];
|
IRRef lref = as->phireg[r];
|
||||||
IRIns *ir = IR(lref);
|
IRIns *ir = IR(lref);
|
||||||
|
if (irt_ismarked(ir->t)) {
|
||||||
|
irt_clearmark(ir->t);
|
||||||
/* Left PHI gained a spill slot before the loop? */
|
/* Left PHI gained a spill slot before the loop? */
|
||||||
if (irt_ismarked(ir->t) && ra_hasspill(ir->s)) {
|
if (ra_hasspill(ir->s)) {
|
||||||
IRRef ren;
|
IRRef ren;
|
||||||
lj_ir_set(as->J, IRT(IR_RENAME, IRT_NIL), lref, as->loopsnapno);
|
lj_ir_set(as->J, IRT(IR_RENAME, IRT_NIL), lref, as->loopsnapno);
|
||||||
ren = tref_ref(lj_ir_emit(as->J));
|
ren = tref_ref(lj_ir_emit(as->J));
|
||||||
@ -1255,7 +1257,7 @@ static void asm_phi_fixup(ASMState *as)
|
|||||||
IR(ren)->r = (uint8_t)r;
|
IR(ren)->r = (uint8_t)r;
|
||||||
IR(ren)->s = SPS_NONE;
|
IR(ren)->s = SPS_NONE;
|
||||||
}
|
}
|
||||||
irt_clearmark(ir->t); /* Always clear marker. */
|
}
|
||||||
rset_clear(work, r);
|
rset_clear(work, r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user