aboutsummaryrefslogtreecommitdiffhomepage
path: root/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'x86_64')
-rw-r--r--x86_64/emit.c6
-rw-r--r--x86_64/isel.c3
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");