Prechádzať zdrojové kódy

x64: Fix RETHI/RETLO swap after call.

Reported by savilli.
Mike Pall 3 rokov pred
rodič
commit
5e3c45c43b
1 zmenil súbory, kde vykonal 2 pridanie a 1 odobranie
  1. 2 1
      src/lj_asm.c

+ 2 - 1
src/lj_asm.c

@@ -847,7 +847,8 @@ static void ra_destpair(ASMState *as, IRIns *ir)
   if (destlo == RID_RETHI) {
     if (desthi == RID_RETLO) {
 #if LJ_TARGET_X86ORX64
-      *--as->mcp = REX_64IR(irx, XI_XCHGa + RID_RETHI);
+      *--as->mcp = XI_XCHGa + RID_RETHI;
+      if (LJ_64 && irt_is64(irx->t)) *--as->mcp = 0x48;
 #else
       emit_movrr(as, irx, RID_RETHI, RID_TMP);
       emit_movrr(as, irx, RID_RETLO, RID_RETHI);