diff options
Diffstat (limited to 'src/lj_asm_x86.h')
-rw-r--r-- | src/lj_asm_x86.h | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h index 9dba6b70..d90963ef 100644 --- a/src/lj_asm_x86.h +++ b/src/lj_asm_x86.h | |||
@@ -512,6 +512,7 @@ static void asm_gencall(ASMState *as, const CCallInfo *ci, IRRef *args) | |||
512 | } | 512 | } |
513 | ofs += sizeof(intptr_t); | 513 | ofs += sizeof(intptr_t); |
514 | } | 514 | } |
515 | checkmclim(as); | ||
515 | } | 516 | } |
516 | #if LJ_64 && !LJ_ABI_WIN | 517 | #if LJ_64 && !LJ_ABI_WIN |
517 | if (patchnfpr) *patchnfpr = fpr - REGARG_FIRSTFPR; | 518 | if (patchnfpr) *patchnfpr = fpr - REGARG_FIRSTFPR; |
@@ -2203,6 +2204,7 @@ static void asm_comp_int64(ASMState *as, IRIns *ir) | |||
2203 | lefthi = asm_fuseload(as, ir->op1, allow); | 2204 | lefthi = asm_fuseload(as, ir->op1, allow); |
2204 | } else { | 2205 | } else { |
2205 | lefthi = ra_alloc1(as, ir->op1, allow); | 2206 | lefthi = ra_alloc1(as, ir->op1, allow); |
2207 | rset_clear(allow, lefthi); | ||
2206 | righthi = asm_fuseload(as, ir->op2, allow); | 2208 | righthi = asm_fuseload(as, ir->op2, allow); |
2207 | if (righthi == RID_MRM) { | 2209 | if (righthi == RID_MRM) { |
2208 | if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base); | 2210 | if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base); |
@@ -2218,13 +2220,8 @@ static void asm_comp_int64(ASMState *as, IRIns *ir) | |||
2218 | leftlo = asm_fuseload(as, (ir-1)->op1, allow); | 2220 | leftlo = asm_fuseload(as, (ir-1)->op1, allow); |
2219 | } else { | 2221 | } else { |
2220 | leftlo = ra_alloc1(as, (ir-1)->op1, allow); | 2222 | leftlo = ra_alloc1(as, (ir-1)->op1, allow); |
2223 | rset_clear(allow, leftlo); | ||
2221 | rightlo = asm_fuseload(as, (ir-1)->op2, allow); | 2224 | rightlo = asm_fuseload(as, (ir-1)->op2, allow); |
2222 | if (rightlo == RID_MRM) { | ||
2223 | if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base); | ||
2224 | if (as->mrm.idx != RID_NONE) rset_clear(allow, as->mrm.idx); | ||
2225 | } else { | ||
2226 | rset_clear(allow, rightlo); | ||
2227 | } | ||
2228 | } | 2225 | } |
2229 | 2226 | ||
2230 | /* All register allocations must be performed _before_ this point. */ | 2227 | /* All register allocations must be performed _before_ this point. */ |