aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm_arm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_asm_arm.h')
-rw-r--r--src/lj_asm_arm.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h
index 262fa59e..57575874 100644
--- a/src/lj_asm_arm.h
+++ b/src/lj_asm_arm.h
@@ -2114,7 +2114,7 @@ static void asm_head_root_base(ASMState *as)
2114} 2114}
2115 2115
2116/* Coalesce BASE register for a side trace. */ 2116/* Coalesce BASE register for a side trace. */
2117static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow) 2117static Reg asm_head_side_base(ASMState *as, IRIns *irp)
2118{ 2118{
2119 IRIns *ir; 2119 IRIns *ir;
2120 asm_head_lreg(as); 2120 asm_head_lreg(as);
@@ -2122,16 +2122,15 @@ static RegSet asm_head_side_base(ASMState *as, IRIns *irp, RegSet allow)
2122 if (ra_hasreg(ir->r) && (rset_test(as->modset, ir->r) || irt_ismarked(ir->t))) 2122 if (ra_hasreg(ir->r) && (rset_test(as->modset, ir->r) || irt_ismarked(ir->t)))
2123 ra_spill(as, ir); 2123 ra_spill(as, ir);
2124 if (ra_hasspill(irp->s)) { 2124 if (ra_hasspill(irp->s)) {
2125 rset_clear(allow, ra_dest(as, ir, allow)); 2125 return ra_dest(as, ir, RSET_GPR);
2126 } else { 2126 } else {
2127 Reg r = irp->r; 2127 Reg r = irp->r;
2128 lua_assert(ra_hasreg(r)); 2128 lua_assert(ra_hasreg(r));
2129 rset_clear(allow, r);
2130 if (r != ir->r && !rset_test(as->freeset, r)) 2129 if (r != ir->r && !rset_test(as->freeset, r))
2131 ra_restore(as, regcost_ref(as->cost[r])); 2130 ra_restore(as, regcost_ref(as->cost[r]));
2132 ra_destreg(as, ir, r); 2131 ra_destreg(as, ir, r);
2132 return r;
2133 } 2133 }
2134 return allow;
2135} 2134}
2136 2135
2137/* -- Tail of trace ------------------------------------------------------- */ 2136/* -- Tail of trace ------------------------------------------------------- */