idup(Ins **, Ins *, ulong) -> idup(Blk *, Ins *, ulong)

Always used this way and factors setting b->nins.
Makes b->ins vector contract more obvious.
This commit is contained in:
Roland Paterson-Jones 2024-10-22 16:07:43 +02:00 committed by Quentin Carbonneaux
parent ca928f6f8d
commit 434cf5fdc4
13 changed files with 24 additions and 39 deletions

2
all.h
View File

@ -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);

View File

@ -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);

View File

@ -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']) {

View File

@ -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']) {

View File

@ -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']) {

3
load.c
View File

@ -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);

View File

@ -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;
}

8
rega.c
View File

@ -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;

View File

@ -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']) {

View File

@ -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']) {

View File

@ -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);
}
}

View File

@ -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 */

11
util.c
View File

@ -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 *