diff options
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); |