]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
ARM64: Simplify code generation for IR_STRTO.
authorMike Pall <mike>
Sat, 9 Sep 2023 15:34:28 +0000 (17:34 +0200)
committerMike Pall <mike>
Sat, 9 Sep 2023 15:34:28 +0000 (17:34 +0200)
Thanks to Peter Cawley. #1070

src/lj_asm_arm64.h

index 9ea2d405f715a02b4a8d6bf6d250072fc141b5a6..d2cb78237744d493768e8d2819b9a3cfe4c07a43 100644 (file)
@@ -664,25 +664,22 @@ static void asm_strto(ASMState *as, IRIns *ir)
 {
   const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_strscan_num];
   IRRef args[2];
-  Reg dest = 0, tmp;
-  int destused = ra_used(ir);
+  Reg tmp;
   int32_t ofs = 0;
   ra_evictset(as, RSET_SCRATCH);
-  if (destused) {
+  if (ra_used(ir)) {
     if (ra_hasspill(ir->s)) {
       ofs = sps_scale(ir->s);
-      destused = 0;
       if (ra_hasreg(ir->r)) {
        ra_free(as, ir->r);
        ra_modified(as, ir->r);
        emit_spload(as, ir, ir->r, ofs);
       }
     } else {
-      dest = ra_dest(as, ir, RSET_FPR);
+      Reg dest = ra_dest(as, ir, RSET_FPR);
+      emit_lso(as, A64I_LDRd, (dest & 31), RID_SP, 0);
     }
   }
-  if (destused)
-    emit_lso(as, A64I_LDRd, (dest & 31), RID_SP, 0);
   asm_guardcnb(as, A64I_CBZ, RID_RET);
   args[0] = ir->op1; /* GCstr *str */
   args[1] = ASMREF_TMP1; /* TValue *n  */