aboutsummaryrefslogtreecommitdiff
path: root/src/lj_asm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_asm.c')
-rw-r--r--src/lj_asm.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c
index 0fcd8485..7ce2e5d2 100644
--- a/src/lj_asm.c
+++ b/src/lj_asm.c
@@ -1889,6 +1889,7 @@ static void asm_head_side(ASMState *as)
1889 RegSet allow = RSET_ALL; /* Inverse of all coalesced registers. */ 1889 RegSet allow = RSET_ALL; /* Inverse of all coalesced registers. */
1890 RegSet live = RSET_EMPTY; /* Live parent registers. */ 1890 RegSet live = RSET_EMPTY; /* Live parent registers. */
1891 RegSet pallow = RSET_GPR; /* Registers needed by the parent stack check. */ 1891 RegSet pallow = RSET_GPR; /* Registers needed by the parent stack check. */
1892 Reg pbase;
1892 IRIns *irp = &as->parent->ir[REF_BASE]; /* Parent base. */ 1893 IRIns *irp = &as->parent->ir[REF_BASE]; /* Parent base. */
1893 int32_t spadj, spdelta; 1894 int32_t spadj, spdelta;
1894 int pass2 = 0; 1895 int pass2 = 0;
@@ -1899,7 +1900,11 @@ static void asm_head_side(ASMState *as)
1899 /* Force snap #0 alloc to prevent register overwrite in stack check. */ 1900 /* Force snap #0 alloc to prevent register overwrite in stack check. */
1900 asm_snap_alloc(as, 0); 1901 asm_snap_alloc(as, 0);
1901 } 1902 }
1902 allow = asm_head_side_base(as, irp, allow); 1903 pbase = asm_head_side_base(as, irp);
1904 if (pbase != RID_NONE) {
1905 rset_clear(allow, pbase);
1906 rset_clear(pallow, pbase);
1907 }
1903 1908
1904 /* Scan all parent SLOADs and collect register dependencies. */ 1909 /* Scan all parent SLOADs and collect register dependencies. */
1905 for (i = as->stopins; i > REF_BASE; i--) { 1910 for (i = as->stopins; i > REF_BASE; i--) {