aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm_arm.h
diff options
context:
space:
mode:
authorMike Pall <mike>2012-08-25 18:38:30 +0200
committerMike Pall <mike>2012-08-25 18:38:30 +0200
commit52ca2cc8ba9dbab67cdf70a991a5b2b3ec933773 (patch)
tree210f435b01a77c67a6f1b3d8ffdc53ece576fcb3 /src/lj_asm_arm.h
parent099635c86c98b08bf07fc948fc8638c8e4ad59f2 (diff)
downloadluajit-52ca2cc8ba9dbab67cdf70a991a5b2b3ec933773.tar.gz
luajit-52ca2cc8ba9dbab67cdf70a991a5b2b3ec933773.tar.bz2
luajit-52ca2cc8ba9dbab67cdf70a991a5b2b3ec933773.zip
ARM: Fix base register coalescing.
Diffstat (limited to '')
-rw-r--r--src/lj_asm_arm.h9
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}