diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h index 4b7066f2..4e34b3be 100644 --- a/src/lj_asm_arm64.h +++ b/src/lj_asm_arm64.h @@ -1201,7 +1201,7 @@ dotypecheck: tmp = ra_scratch(as, allow); rset_clear(allow, tmp); } - if (ra_hasreg(dest) && irt_isnum(t) && !(ir->op2 & IRSLOAD_CONVERT)) + if (ra_hasreg(dest) && tmp != dest) emit_dn(as, A64I_FMOV_D_R, (dest & 31), tmp); /* Need type check, even if the load result is unused. */ asm_guardcc(as, irt_isnum(t) ? CC_LS : CC_NE);