From 85530429ac0c5512d51cf52fa07022452791c1c4 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 13 Jun 2023 20:03:46 +0200 Subject: lowering of structcopy --- ir.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'ir.c') diff --git a/ir.c b/ir.c index 5b54d70..432a10d 100644 --- a/ir.c +++ b/ir.c @@ -218,7 +218,7 @@ newinstr(void) { if (instrfreelist != -1) { int t = instrfreelist; - memcpy(&instrfreelist, &instrtab[instrfreelist], sizeof(int)); + memcpy(&instrfreelist, &instrtab[t], sizeof(int)); return t; } assert(ninstr < arraylength(instrtab)); @@ -257,7 +257,7 @@ delinstr(struct block *blk, int idx) { assert(idx >= 0 && idx < blk->ins.n); memcpy(&instrtab[blk->ins.p[idx]], &instrfreelist, sizeof(int)); - instrfreelist = idx; + instrfreelist = blk->ins.p[idx]; for (int i = idx; i < blk->ins.n; ++i) blk->ins.p[i] = blk->ins.p[i + 1]; --blk->ins.n; @@ -401,6 +401,7 @@ irfini(struct function *fn) extern int nerror; if (!nerror) { abi0(fn); + lowerintrin(fn); mctarg->isel(fn); regalloc(fn); if (!ccopt.dbg.any) -- cgit v1.2.3