diff options
Diffstat (limited to 'src/lj_asm_arm.h')
-rw-r--r-- | src/lj_asm_arm.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h index e865850d..f307d6b8 100644 --- a/src/lj_asm_arm.h +++ b/src/lj_asm_arm.h | |||
@@ -2102,9 +2102,12 @@ static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow) | |||
2102 | if (ra_hasspill(irp->s)) { | 2102 | if (ra_hasspill(irp->s)) { |
2103 | rset_clear(allow, ra_dest(as, ir, allow)); | 2103 | rset_clear(allow, ra_dest(as, ir, allow)); |
2104 | } else { | 2104 | } else { |
2105 | lua_assert(ra_hasreg(irp->r)); | 2105 | Reg r = irp->r; |
2106 | rset_clear(allow, irp->r); | 2106 | lua_assert(ra_hasreg(r)); |
2107 | ra_destreg(as, ir, irp->r); | 2107 | rset_clear(allow, r); |
2108 | if (r != ir->r && !rset_test(as->freeset, r)) | ||
2109 | ra_restore(as, regcost_ref(as->cost[r])); | ||
2110 | ra_destreg(as, ir, r); | ||
2108 | } | 2111 | } |
2109 | return allow; | 2112 | return allow; |
2110 | } | 2113 | } |