aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_asm_x86.h8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index e9c53a09..28aa2791 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -2211,6 +2211,7 @@ static void asm_comp_int64(ASMState *as, IRIns *ir)
2211 lefthi = asm_fuseload(as, ir->op1, allow); 2211 lefthi = asm_fuseload(as, ir->op1, allow);
2212 } else { 2212 } else {
2213 lefthi = ra_alloc1(as, ir->op1, allow); 2213 lefthi = ra_alloc1(as, ir->op1, allow);
2214 rset_clear(allow, lefthi);
2214 righthi = asm_fuseload(as, ir->op2, allow); 2215 righthi = asm_fuseload(as, ir->op2, allow);
2215 if (righthi == RID_MRM) { 2216 if (righthi == RID_MRM) {
2216 if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base); 2217 if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base);
@@ -2226,13 +2227,8 @@ static void asm_comp_int64(ASMState *as, IRIns *ir)
2226 leftlo = asm_fuseload(as, (ir-1)->op1, allow); 2227 leftlo = asm_fuseload(as, (ir-1)->op1, allow);
2227 } else { 2228 } else {
2228 leftlo = ra_alloc1(as, (ir-1)->op1, allow); 2229 leftlo = ra_alloc1(as, (ir-1)->op1, allow);
2230 rset_clear(allow, leftlo);
2229 rightlo = asm_fuseload(as, (ir-1)->op2, allow); 2231 rightlo = asm_fuseload(as, (ir-1)->op2, allow);
2230 if (rightlo == RID_MRM) {
2231 if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base);
2232 if (as->mrm.idx != RID_NONE) rset_clear(allow, as->mrm.idx);
2233 } else {
2234 rset_clear(allow, rightlo);
2235 }
2236 } 2232 }
2237 2233
2238 /* All register allocations must be performed _before_ this point. */ 2234 /* All register allocations must be performed _before_ this point. */