diff options
| author | 2023-06-13 20:03:46 +0200 | |
|---|---|---|
| committer | 2023-06-13 20:07:48 +0200 | |
| commit | 85530429ac0c5512d51cf52fa07022452791c1c4 (patch) | |
| tree | ee3dfe52ded21fcbb15c3a1dbb71d929274cbdb7 /ir.c | |
| parent | ca85b61809d976164139eed20f063c596f7b9b75 (diff) | |
lowering of structcopy
Diffstat (limited to 'ir.c')
| -rw-r--r-- | ir.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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) |