From 1fae7b08e319ba4028d303b09de72b026109a269 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Fri, 22 Feb 2019 19:05:38 +0000 Subject: [PATCH 62/72] Remove redundant emit_check_ofs Even if the offset is a constant, it is not 32-bit since it failed that check earlier before it came here. The code is thus useless and hence removed. This also fixes inconsistencies with op1/op2 renaming that were introduced in PR #438. They were never triggered because the code path is effectively dead for arm64. --- src/lj_asm_arm64.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h index ce49cde..c214e10 100644 --- a/src/lj_asm_arm64.h +++ b/src/lj_asm_arm64.h @@ -298,27 +298,14 @@ static void asm_fusexref(ASMState *as, A64Ins ai, Reg rd, IRRef ref, IRRef ref1 = ir->op1; IRRef ref2 = ir->op2; Reg rn; - IRIns *irr; - uint32_t m; if (irref_isk(ir->op1)) { ref1 = ir->op2; ref2 = ir->op1; } rn = ra_alloc1(as, ref1, allow); - irr = IR(ref2); - if (irr+1 == ir && !ra_used(irr) && - irr->o == IR_ADD && irref_isk(irr->op2)) { - ofs = sizeof(GCstr) + IR(irr->op2)->i; - if (emit_checkofs(ai, ofs)) { - Reg rm = ra_alloc1(as, irr->op1, rset_exclude(allow, rn)); - m = A64F_M(rm) | A64F_EX(A64EX_SXTW); - goto skipopm; - } - } - m = asm_fuseopm(as, 0, ref2, rset_exclude(allow, rn)); + uint32_t m = asm_fuseopm(as, 0, ref2, rset_exclude(allow, rn)); ofs = sizeof(GCstr); - skipopm: emit_lso(as, ai, rd, rd, ofs); emit_dn(as, A64I_ADDx^m, rd, rn); return; -- 2.20.1