From 6ba65cefb0652d340f1729ce8d114cb3681e914a Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Thu, 4 Apr 2013 17:05:00 +0200 Subject: [PATCH] FFI/x86: Fix register allocation for 64 bit comparisons. --- src/lj_asm_x86.h | 8 ++------ 1 file 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) lefthi = asm_fuseload(as, ir->op1, allow); } else { lefthi = ra_alloc1(as, ir->op1, allow); + rset_clear(allow, lefthi); righthi = asm_fuseload(as, ir->op2, allow); if (righthi == RID_MRM) { 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) leftlo = asm_fuseload(as, (ir-1)->op1, allow); } else { leftlo = ra_alloc1(as, (ir-1)->op1, allow); + rset_clear(allow, leftlo); rightlo = asm_fuseload(as, (ir-1)->op2, allow); - if (rightlo == RID_MRM) { - if (as->mrm.base != RID_NONE) rset_clear(allow, as->mrm.base); - if (as->mrm.idx != RID_NONE) rset_clear(allow, as->mrm.idx); - } else { - rset_clear(allow, rightlo); - } } /* All register allocations must be performed _before_ this point. */ -- 2.11.4.GIT