mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Eliminate some rare occurrences of redundant PHIs.
This commit is contained in:
parent
87456f73f5
commit
8437d0c48d
@ -159,11 +159,15 @@ static void loop_emit_phi(jit_State *J, IRRef1 *subst, IRRef1 *phi, IRRef nphi,
|
||||
for (i = 0; i < nphi; i++) {
|
||||
IRRef lref = phi[i];
|
||||
IRIns *ir = IR(lref);
|
||||
if (!irt_ismarked(ir->t)) { /* Emit PHI if not marked. */
|
||||
if (!irt_ismarked(ir->t)) { /* Emit PHI if not marked and not redundant. */
|
||||
IRRef rref = subst[lref];
|
||||
if (rref > invar)
|
||||
irt_setphi(IR(rref)->t);
|
||||
emitir_raw(IRT(IR_PHI, irt_type(ir->t)), lref, rref);
|
||||
if (lref == rref) {
|
||||
irt_clearphi(ir->t);
|
||||
} else {
|
||||
if (rref > invar)
|
||||
irt_setphi(IR(rref)->t);
|
||||
emitir_raw(IRT(IR_PHI, irt_type(ir->t)), lref, rref);
|
||||
}
|
||||
} else { /* Otherwise eliminate PHI. */
|
||||
irt_clearmark(ir->t);
|
||||
irt_clearphi(ir->t);
|
||||
|
Loading…
Reference in New Issue
Block a user