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) } } else { Reg tmp = ra_scratch(as, rset_exclude(RSET_GPR, sb)); - /* Passing ir isn't strictly correct, but it's an IRT_PGC, too. */ - emit_storeofs(as, ir, tmp, sb, offsetof(SBuf, w)); - emit_loadofs(as, ir, tmp, sb, offsetof(SBuf, b)); + IRIns irbp; + irbp.ot = IRT(0, IRT_PTR); /* Buffer data pointer type. */ + emit_storeofs(as, &irbp, tmp, sb, offsetof(SBuf, w)); + emit_loadofs(as, &irbp, tmp, sb, offsetof(SBuf, b)); } #if LJ_TARGET_X86ORX64 ra_left(as, sb, ir->op1);