mirror of
git://c9x.me/qbe.git
synced 2026-04-05 09:59:47 +00:00
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:
parent
ca928f6f8d
commit
434cf5fdc4
2
all.h
2
all.h
@ -478,7 +478,7 @@ int isreg(Ref);
|
|||||||
int iscmp(int, int *, int *);
|
int iscmp(int, int *, int *);
|
||||||
void emit(int, int, Ref, Ref, Ref);
|
void emit(int, int, Ref, Ref, Ref);
|
||||||
void emiti(Ins);
|
void emiti(Ins);
|
||||||
void idup(Ins **, Ins *, ulong);
|
void idup(Blk *, Ins *, ulong);
|
||||||
Ins *icpy(Ins *, Ins *, ulong);
|
Ins *icpy(Ins *, Ins *, ulong);
|
||||||
int cmpop(int);
|
int cmpop(int);
|
||||||
int cmpneg(int);
|
int cmpneg(int);
|
||||||
|
|||||||
@ -828,8 +828,7 @@ amd64_isel(Fn *fn)
|
|||||||
seljmp(b, fn);
|
seljmp(b, fn);
|
||||||
for (i=&b->ins[b->nins]; i!=b->ins;)
|
for (i=&b->ins[b->nins]; i!=b->ins;)
|
||||||
sel(*--i, num, fn);
|
sel(*--i, num, fn);
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
}
|
}
|
||||||
free(num);
|
free(num);
|
||||||
|
|
||||||
|
|||||||
@ -508,8 +508,7 @@ split(Fn *fn, Blk *b)
|
|||||||
|
|
||||||
++fn->nblk;
|
++fn->nblk;
|
||||||
bn = newblk();
|
bn = newblk();
|
||||||
bn->nins = &insb[NIns] - curi;
|
idup(bn, curi, &insb[NIns]-curi);
|
||||||
idup(&bn->ins, curi, bn->nins);
|
|
||||||
curi = &insb[NIns];
|
curi = &insb[NIns];
|
||||||
bn->visit = ++b->visit;
|
bn->visit = ++b->visit;
|
||||||
strf(bn->name, "%s.%d", b->name, b->visit);
|
strf(bn->name, "%s.%d", b->name, b->visit);
|
||||||
@ -711,8 +710,7 @@ amd64_sysv_abi(Fn *fn)
|
|||||||
if (b == fn->start)
|
if (b == fn->start)
|
||||||
for (; ral; ral=ral->link)
|
for (; ral; ral=ral->link)
|
||||||
emiti(ral->i);
|
emiti(ral->i);
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
} while (b != fn->start);
|
} while (b != fn->start);
|
||||||
|
|
||||||
if (debug['A']) {
|
if (debug['A']) {
|
||||||
|
|||||||
@ -545,8 +545,7 @@ split(Fn *fn, Blk *b)
|
|||||||
|
|
||||||
++fn->nblk;
|
++fn->nblk;
|
||||||
bn = newblk();
|
bn = newblk();
|
||||||
bn->nins = &insb[NIns] - curi;
|
idup(bn, curi, &insb[NIns]-curi);
|
||||||
idup(&bn->ins, curi, bn->nins);
|
|
||||||
curi = &insb[NIns];
|
curi = &insb[NIns];
|
||||||
bn->visit = ++b->visit;
|
bn->visit = ++b->visit;
|
||||||
strf(bn->name, "%s.%d", b->name, b->visit);
|
strf(bn->name, "%s.%d", b->name, b->visit);
|
||||||
@ -791,8 +790,7 @@ arm64_abi(Fn *fn)
|
|||||||
if (b == fn->start)
|
if (b == fn->start)
|
||||||
for (; il; il=il->link)
|
for (; il; il=il->link)
|
||||||
emiti(il->i);
|
emiti(il->i);
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
} while (b != fn->start);
|
} while (b != fn->start);
|
||||||
|
|
||||||
if (debug['A']) {
|
if (debug['A']) {
|
||||||
@ -843,8 +841,7 @@ apple_extsb(Fn *fn)
|
|||||||
emit(op, Kw, i->to, i->arg[0], R);
|
emit(op, Kw, i->to, i->arg[0], R);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug['A']) {
|
if (debug['A']) {
|
||||||
|
|||||||
@ -306,8 +306,7 @@ arm64_isel(Fn *fn)
|
|||||||
seljmp(b, fn);
|
seljmp(b, fn);
|
||||||
for (i=&b->ins[b->nins]; i!=b->ins;)
|
for (i=&b->ins[b->nins]; i!=b->ins;)
|
||||||
sel(*--i, fn);
|
sel(*--i, fn);
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug['I']) {
|
if (debug['I']) {
|
||||||
|
|||||||
3
load.c
3
load.c
@ -481,8 +481,7 @@ loadopt(Fn *fn)
|
|||||||
vgrow(&ib, ++nt);
|
vgrow(&ib, ++nt);
|
||||||
ib[nt-1] = *i;
|
ib[nt-1] = *i;
|
||||||
}
|
}
|
||||||
b->nins = nt;
|
idup(b, ib, nt);
|
||||||
idup(&b->ins, ib, nt);
|
|
||||||
}
|
}
|
||||||
vfree(ib);
|
vfree(ib);
|
||||||
vfree(ilog);
|
vfree(ilog);
|
||||||
|
|||||||
3
parse.c
3
parse.c
@ -582,8 +582,7 @@ findblk(char *name)
|
|||||||
static void
|
static void
|
||||||
closeblk()
|
closeblk()
|
||||||
{
|
{
|
||||||
curb->nins = curi - insb;
|
idup(curb, insb, curi-insb);
|
||||||
idup(&curb->ins, insb, curb->nins);
|
|
||||||
blink = &curb->link;
|
blink = &curb->link;
|
||||||
curi = insb;
|
curi = insb;
|
||||||
}
|
}
|
||||||
|
|||||||
8
rega.c
8
rega.c
@ -439,8 +439,7 @@ doblk(Blk *b, RMap *cur)
|
|||||||
* the above loop must be changed */
|
* the above loop must be changed */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* qsort() comparison function to peel
|
/* qsort() comparison function to peel
|
||||||
@ -671,10 +670,9 @@ rega(Fn *fn)
|
|||||||
blist = b1;
|
blist = b1;
|
||||||
fn->nblk++;
|
fn->nblk++;
|
||||||
strf(b1->name, "%s_%s", b->name, s->name);
|
strf(b1->name, "%s_%s", b->name, s->name);
|
||||||
b1->nins = &insb[NIns] - curi;
|
stmov += &insb[NIns]-curi;
|
||||||
stmov += b1->nins;
|
|
||||||
stblk += 1;
|
stblk += 1;
|
||||||
idup(&b1->ins, curi, b1->nins);
|
idup(b1, curi, &insb[NIns]-curi);
|
||||||
b1->jmp.type = Jjmp;
|
b1->jmp.type = Jjmp;
|
||||||
b1->s1 = s;
|
b1->s1 = s;
|
||||||
**ps = b1;
|
**ps = b1;
|
||||||
|
|||||||
@ -642,8 +642,7 @@ rv64_abi(Fn *fn)
|
|||||||
if (b == fn->start)
|
if (b == fn->start)
|
||||||
for (; il; il=il->link)
|
for (; il; il=il->link)
|
||||||
emiti(il->i);
|
emiti(il->i);
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
} while (b != fn->start);
|
} while (b != fn->start);
|
||||||
|
|
||||||
if (debug['A']) {
|
if (debug['A']) {
|
||||||
|
|||||||
@ -244,8 +244,7 @@ rv64_isel(Fn *fn)
|
|||||||
seljmp(b, fn);
|
seljmp(b, fn);
|
||||||
for (i=&b->ins[b->nins]; i!=b->ins;)
|
for (i=&b->ins[b->nins]; i!=b->ins;)
|
||||||
sel(*--i, fn);
|
sel(*--i, fn);
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug['I']) {
|
if (debug['I']) {
|
||||||
|
|||||||
6
simpl.c
6
simpl.c
@ -118,9 +118,7 @@ simpl(Fn *fn)
|
|||||||
--i;
|
--i;
|
||||||
ins(&i, &new, b, fn);
|
ins(&i, &new, b, fn);
|
||||||
}
|
}
|
||||||
if (new) {
|
if (new)
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
3
spill.c
3
spill.c
@ -517,8 +517,7 @@ spill(Fn *fn)
|
|||||||
p->to = slot(p->to.val);
|
p->to = slot(p->to.val);
|
||||||
}
|
}
|
||||||
bscopy(b->in, v);
|
bscopy(b->in, v);
|
||||||
b->nins = &insb[NIns] - curi;
|
idup(b, curi, &insb[NIns]-curi);
|
||||||
idup(&b->ins, curi, b->nins);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* align the locals to a 16 byte boundary */
|
/* align the locals to a 16 byte boundary */
|
||||||
|
|||||||
11
util.c
11
util.c
@ -253,14 +253,15 @@ emiti(Ins i)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
idup(Ins **pd, Ins *s, ulong n)
|
idup(Blk *b, Ins *s, ulong n)
|
||||||
{
|
{
|
||||||
if (*pd)
|
if (b->ins)
|
||||||
vgrow(pd, n);
|
vgrow(&b->ins, n);
|
||||||
else
|
else
|
||||||
*pd = vnew(n, sizeof(Ins), PFn);
|
b->ins = vnew(n, sizeof(Ins), PFn);
|
||||||
if (n)
|
if (n)
|
||||||
memcpy(*pd, s, n * sizeof(Ins));
|
memcpy(b->ins, s, n * sizeof(Ins));
|
||||||
|
b->nins = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ins *
|
Ins *
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user