diff options
-rw-r--r-- | src/lj_asm.c | 7 |
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); |