diff options
Diffstat (limited to 'x86_64')
| -rw-r--r-- | x86_64/emit.c | 6 | ||||
| -rw-r--r-- | x86_64/isel.c | 3 |
2 files changed, 2 insertions, 7 deletions
diff --git a/x86_64/emit.c b/x86_64/emit.c index 3fc93b0..2786e22 100644 --- a/x86_64/emit.c +++ b/x86_64/emit.c @@ -738,7 +738,6 @@ static struct blkaddr { uint relreloc; }; } *blkaddr; -static uint nblkaddr; static void Xjcc(uchar **pcode, enum cc cc, struct block *dst) @@ -1356,10 +1355,7 @@ emitbin(struct function *fn) } while ((blk = blk->lprev) != fn->entry); } - if (nblkaddr < fn->nblk) { - blkaddr = xrealloc(blkaddr, (nblkaddr = fn->nblk) * sizeof *blkaddr); - } - memset(blkaddr, 0, nblkaddr * sizeof *blkaddr); + blkaddr = allocz(fn->passarena, fn->nblk * sizeof *blkaddr, 0); blk = fn->entry; do { diff --git a/x86_64/isel.c b/x86_64/isel.c index 2b087cd..bc49d03 100644 --- a/x86_64/isel.c +++ b/x86_64/isel.c @@ -627,7 +627,7 @@ x86_64_isel(struct function *fn) struct block *blk = fn->entry; fn->stksiz = 0; - stkslots = xcalloc((nstkslots = ninstr) * sizeof *stkslots); + stkslots = allocz(fn->passarena, (nstkslots = ninstr) * sizeof *stkslots, 0); do { int i; for (i = 0; i < blk->phi.n; ++i) { @@ -649,7 +649,6 @@ x86_64_isel(struct function *fn) } seljmp(fn, blk); } while ((blk = blk->lnext) != fn->entry); - free(stkslots); if (ccopt.dbg.i) { bfmt(ccopt.dbgout, "<< After isel >>\n"); |