aboutsummaryrefslogtreecommitdiffhomepage
path: root/regalloc.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2023-06-20 19:43:06 +0200
committerlemon <lsof@mailbox.org>2023-06-20 19:43:06 +0200
commita0de0318bbb41e9d51375a273fdad033ddd0ae90 (patch)
treec770501c482922e9bc34084b000dfd9fbccd96cf /regalloc.c
parent8cea6c2e91641b06921b4e358c73c60981ba366d (diff)
amd64/emit: ensure stack is 16-byte aligned
Diffstat (limited to 'regalloc.c')
-rw-r--r--regalloc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/regalloc.c b/regalloc.c
index 6f08b5b..8f31b05 100644
--- a/regalloc.c
+++ b/regalloc.c
@@ -270,6 +270,8 @@ regalloc(struct function *fn)
static union ref *stkslotrefsbuf[64];
struct rega ra = {0};
+ fn->isleaf = 1;
+
vinit(&stkslotrefs, stkslotrefsbuf, arraylength(stkslotrefsbuf));
ra.allocs = xcalloc((ninstr*2 < MAXINSTR ? ninstr*2 : MAXINSTR) * sizeof(struct alloc));
ra.nfreegpr = mctarg->ngpr - popcnt(mctarg->rglob->u);
@@ -329,6 +331,8 @@ regalloc(struct function *fn)
struct call *call = &calltab.p[ins->r.i];
struct bitset rspill[1] = {0};
+ fn->isleaf = 0;
+
for (int r = mctarg->gpr0; r < mctarg->gpr0 + mctarg->ngpr; ++r)
if (!bstest(mctarg->rglob, r) && !bstest(mctarg->rcallee, r))
bsset(rspill, r);