aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2014-03-06 00:42:38 +0100
committerMike Pall <mike>2014-03-06 00:42:38 +0100
commit0e9bf2f60d9261f80e8bf12dd236c5cbe96f1926 (patch)
tree3a4cf3798b34fcc4b01bc81334664d25752f71a6
parent19d53ed2f9f3633c35c5cc5c6492bb19d751e3b1 (diff)
parent416abff90dae9c66e17efe9d6a01efce63eefba8 (diff)
downloadluajit-0e9bf2f60d9261f80e8bf12dd236c5cbe96f1926.tar.gz
luajit-0e9bf2f60d9261f80e8bf12dd236c5cbe96f1926.tar.bz2
luajit-0e9bf2f60d9261f80e8bf12dd236c5cbe96f1926.zip
Merge branch 'master' into v2.1
-rw-r--r--src/lj_asm.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index a05ec75c..329e5c95 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -1471,16 +1471,18 @@ static void asm_phi_fixup(ASMState *as)
1471 Reg r = rset_picktop(work); 1471 Reg r = rset_picktop(work);
1472 IRRef lref = as->phireg[r]; 1472 IRRef lref = as->phireg[r];
1473 IRIns *ir = IR(lref); 1473 IRIns *ir = IR(lref);
1474 /* Left PHI gained a spill slot before the loop? */ 1474 if (irt_ismarked(ir->t)) {
1475 if (irt_ismarked(ir->t) && ra_hasspill(ir->s)) { 1475 irt_clearmark(ir->t);
1476 IRRef ren; 1476 /* Left PHI gained a spill slot before the loop? */
1477 lj_ir_set(as->J, IRT(IR_RENAME, IRT_NIL), lref, as->loopsnapno); 1477 if (ra_hasspill(ir->s)) {
1478 ren = tref_ref(lj_ir_emit(as->J)); 1478 IRRef ren;
1479 as->ir = as->T->ir; /* The IR may have been reallocated. */ 1479 lj_ir_set(as->J, IRT(IR_RENAME, IRT_NIL), lref, as->loopsnapno);
1480 IR(ren)->r = (uint8_t)r; 1480 ren = tref_ref(lj_ir_emit(as->J));
1481 IR(ren)->s = SPS_NONE; 1481 as->ir = as->T->ir; /* The IR may have been reallocated. */
1482 IR(ren)->r = (uint8_t)r;
1483 IR(ren)->s = SPS_NONE;
1484 }
1482 } 1485 }
1483 irt_clearmark(ir->t); /* Always clear marker. */
1484 rset_clear(work, r); 1486 rset_clear(work, r);
1485 } 1487 }
1486} 1488}