diff options
| author | Roland Paterson-Jones <[email protected]> | 2024-10-22 16:07:43 +0200 |
|---|---|---|
| committer | Quentin Carbonneaux <[email protected]> | 2025-03-14 09:47:05 +0100 |
| commit | 434cf5fdc4ba027f0ac04cd198658860b6fc034a (patch) | |
| tree | 0f2dff83f9295fa4836c79e316d1d168e8a94762 | |
| parent | ca928f6f8d18b4cf3acd1dd4b7443a5631c06af2 (diff) | |
idup(Ins **, Ins *, ulong) -> idup(Blk *, Ins *, ulong)
Always used this way and factors setting b->nins.
Makes b->ins vector contract more obvious.
| -rw-r--r-- | all.h | 2 | ||||
| -rw-r--r-- | amd64/isel.c | 3 | ||||
| -rw-r--r-- | amd64/sysv.c | 6 | ||||
| -rw-r--r-- | arm64/abi.c | 9 | ||||
| -rw-r--r-- | arm64/isel.c | 3 | ||||
| -rw-r--r-- | load.c | 3 | ||||
| -rw-r--r-- | parse.c | 3 | ||||
| -rw-r--r-- | rega.c | 8 | ||||
| -rw-r--r-- | rv64/abi.c | 3 | ||||
| -rw-r--r-- | rv64/isel.c | 3 | ||||
| -rw-r--r-- | simpl.c | 6 | ||||
| -rw-r--r-- | spill.c | 3 | ||||
| -rw-r--r-- | util.c | 11 |
13 files changed, 24 insertions, 39 deletions
@@ -478,7 +478,7 @@ int isreg(Ref); int iscmp(int, int *, int *); void emit(int, int, Ref, Ref, Ref); void emiti(Ins); -void idup(Ins **, Ins *, ulong); +void idup(Blk *, Ins *, ulong); Ins *icpy(Ins *, Ins *, ulong); int cmpop(int); int cmpneg(int); diff --git a/amd64/isel.c b/amd64/isel.c index bd645ce..4b831f8 100644 --- a/amd64/isel.c +++ b/amd64/isel.c @@ -828,8 +828,7 @@ amd64_isel(Fn *fn) seljmp(b, fn); for (i=&b->ins[b->nins]; i!=b->ins;) sel(*--i, num, fn); - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } free(num); diff --git a/amd64/sysv.c b/amd64/sysv.c index ba4dc8e..8a1fd2a 100644 --- a/amd64/sysv.c +++ b/amd64/sysv.c @@ -508,8 +508,7 @@ split(Fn *fn, Blk *b) ++fn->nblk; bn = newblk(); - bn->nins = &insb[NIns] - curi; - idup(&bn->ins, curi, bn->nins); + idup(bn, curi, &insb[NIns]-curi); curi = &insb[NIns]; bn->visit = ++b->visit; strf(bn->name, "%s.%d", b->name, b->visit); @@ -711,8 +710,7 @@ amd64_sysv_abi(Fn *fn) if (b == fn->start) for (; ral; ral=ral->link) emiti(ral->i); - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } while (b != fn->start); if (debug['A']) { diff --git a/arm64/abi.c b/arm64/abi.c index fc23637..42af2be 100644 --- a/arm64/abi.c +++ b/arm64/abi.c @@ -545,8 +545,7 @@ split(Fn *fn, Blk *b) ++fn->nblk; bn = newblk(); - bn->nins = &insb[NIns] - curi; - idup(&bn->ins, curi, bn->nins); + idup(bn, curi, &insb[NIns]-curi); curi = &insb[NIns]; bn->visit = ++b->visit; strf(bn->name, "%s.%d", b->name, b->visit); @@ -791,8 +790,7 @@ arm64_abi(Fn *fn) if (b == fn->start) for (; il; il=il->link) emiti(il->i); - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } while (b != fn->start); if (debug['A']) { @@ -843,8 +841,7 @@ apple_extsb(Fn *fn) emit(op, Kw, i->to, i->arg[0], R); } } - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } if (debug['A']) { diff --git a/arm64/isel.c b/arm64/isel.c index 9ce6adc..7d85b92 100644 --- a/arm64/isel.c +++ b/arm64/isel.c @@ -306,8 +306,7 @@ arm64_isel(Fn *fn) seljmp(b, fn); for (i=&b->ins[b->nins]; i!=b->ins;) sel(*--i, fn); - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } if (debug['I']) { @@ -481,8 +481,7 @@ loadopt(Fn *fn) vgrow(&ib, ++nt); ib[nt-1] = *i; } - b->nins = nt; - idup(&b->ins, ib, nt); + idup(b, ib, nt); } vfree(ib); vfree(ilog); @@ -582,8 +582,7 @@ findblk(char *name) static void closeblk() { - curb->nins = curi - insb; - idup(&curb->ins, insb, curb->nins); + idup(curb, insb, curi-insb); blink = &curb->link; curi = insb; } @@ -439,8 +439,7 @@ doblk(Blk *b, RMap *cur) * the above loop must be changed */ } } - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } /* qsort() comparison function to peel @@ -671,10 +670,9 @@ rega(Fn *fn) blist = b1; fn->nblk++; strf(b1->name, "%s_%s", b->name, s->name); - b1->nins = &insb[NIns] - curi; - stmov += b1->nins; + stmov += &insb[NIns]-curi; stblk += 1; - idup(&b1->ins, curi, b1->nins); + idup(b1, curi, &insb[NIns]-curi); b1->jmp.type = Jjmp; b1->s1 = s; **ps = b1; @@ -642,8 +642,7 @@ rv64_abi(Fn *fn) if (b == fn->start) for (; il; il=il->link) emiti(il->i); - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } while (b != fn->start); if (debug['A']) { diff --git a/rv64/isel.c b/rv64/isel.c index 8921a07..55fb645 100644 --- a/rv64/isel.c +++ b/rv64/isel.c @@ -244,8 +244,7 @@ rv64_isel(Fn *fn) seljmp(b, fn); for (i=&b->ins[b->nins]; i!=b->ins;) sel(*--i, fn); - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } if (debug['I']) { @@ -118,9 +118,7 @@ simpl(Fn *fn) --i; ins(&i, &new, b, fn); } - if (new) { - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); - } + if (new) + idup(b, curi, &insb[NIns]-curi); } } @@ -517,8 +517,7 @@ spill(Fn *fn) p->to = slot(p->to.val); } bscopy(b->in, v); - b->nins = &insb[NIns] - curi; - idup(&b->ins, curi, b->nins); + idup(b, curi, &insb[NIns]-curi); } /* align the locals to a 16 byte boundary */ @@ -253,14 +253,15 @@ emiti(Ins i) } void -idup(Ins **pd, Ins *s, ulong n) +idup(Blk *b, Ins *s, ulong n) { - if (*pd) - vgrow(pd, n); + if (b->ins) + vgrow(&b->ins, n); else - *pd = vnew(n, sizeof(Ins), PFn); + b->ins = vnew(n, sizeof(Ins), PFn); if (n) - memcpy(*pd, s, n * sizeof(Ins)); + memcpy(b->ins, s, n * sizeof(Ins)); + b->nins = n; } Ins * |
