From a0de0318bbb41e9d51375a273fdad033ddd0ae90 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 20 Jun 2023 19:43:06 +0200 Subject: amd64/emit: ensure stack is 16-byte aligned --- regalloc.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'regalloc.c') 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); -- cgit v1.2.3