diff options
| author | 2023-06-20 19:43:06 +0200 | |
|---|---|---|
| committer | 2023-06-20 19:43:06 +0200 | |
| commit | a0de0318bbb41e9d51375a273fdad033ddd0ae90 (patch) | |
| tree | c770501c482922e9bc34084b000dfd9fbccd96cf /regalloc.c | |
| parent | 8cea6c2e91641b06921b4e358c73c60981ba366d (diff) | |
amd64/emit: ensure stack is 16-byte aligned
Diffstat (limited to 'regalloc.c')
| -rw-r--r-- | regalloc.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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); |