aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lj_asm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 319ba837..b613e6d3 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -1163,9 +1163,10 @@ static void asm_bufhdr(ASMState *as, IRIns *ir)
1163 } 1163 }
1164 } else { 1164 } else {
1165 Reg tmp = ra_scratch(as, rset_exclude(RSET_GPR, sb)); 1165 Reg tmp = ra_scratch(as, rset_exclude(RSET_GPR, sb));
1166 /* Passing ir isn't strictly correct, but it's an IRT_PGC, too. */ 1166 IRIns irbp;
1167 emit_storeofs(as, ir, tmp, sb, offsetof(SBuf, w)); 1167 irbp.ot = IRT(0, IRT_PTR); /* Buffer data pointer type. */
1168 emit_loadofs(as, ir, tmp, sb, offsetof(SBuf, b)); 1168 emit_storeofs(as, &irbp, tmp, sb, offsetof(SBuf, w));
1169 emit_loadofs(as, &irbp, tmp, sb, offsetof(SBuf, b));
1169 } 1170 }
1170#if LJ_TARGET_X86ORX64 1171#if LJ_TARGET_X86ORX64
1171 ra_left(as, sb, ir->op1); 1172 ra_left(as, sb, ir->op1);