simplify rega's dopm()
This commit is contained in:
parent
762fb723e5
commit
1eb8758824
1 changed files with 6 additions and 14 deletions
20
lisc/rega.c
20
lisc/rega.c
|
@ -202,7 +202,7 @@ pmgen()
|
||||||
free(status);
|
free(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
isreg(Ref r)
|
isreg(Ref r)
|
||||||
{
|
{
|
||||||
return rtype(r) == RTmp && r.val < Tmp0;
|
return rtype(r) == RTmp && r.val < Tmp0;
|
||||||
|
@ -212,8 +212,8 @@ static Ins *
|
||||||
dopm(Blk *b, Ins *i, RMap *m)
|
dopm(Blk *b, Ins *i, RMap *m)
|
||||||
{
|
{
|
||||||
RMap m0;
|
RMap m0;
|
||||||
int n, r, r1, t, nins;
|
int n, r, r1, t;
|
||||||
Ins *i1, *ib, *ip, *ir;
|
Ins *i1, *ip;
|
||||||
|
|
||||||
m0 = *m;
|
m0 = *m;
|
||||||
i1 = i+1;
|
i1 = i+1;
|
||||||
|
@ -251,22 +251,14 @@ dopm(Blk *b, Ins *i, RMap *m)
|
||||||
r = RBASE(ip->arg[0].val);
|
r = RBASE(ip->arg[0].val);
|
||||||
if (rfind(m, r) == -1)
|
if (rfind(m, r) == -1)
|
||||||
radd(m, r, r);
|
radd(m, r, r);
|
||||||
|
*ip = (Ins){ONop, R, {R, R}};
|
||||||
}
|
}
|
||||||
pmgen();
|
pmgen();
|
||||||
#ifdef TEST_PMOV
|
#ifdef TEST_PMOV
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
nins = curi-insb;
|
assert(curi-insb <= i1-i);
|
||||||
ib = alloc((b->nins + nins - (i1-i)) * sizeof(Ins));
|
return memcpy(i, insb, (curi-insb) * sizeof(Ins));
|
||||||
memcpy(ip = ib, b->ins, (i - b->ins) * sizeof(Ins));
|
|
||||||
ip += i - b->ins;
|
|
||||||
memcpy(ir = ip, insb, nins * sizeof(Ins));
|
|
||||||
ip += nins;
|
|
||||||
memcpy(ip, i1, (&b->ins[b->nins] - i1) * sizeof(Ins));
|
|
||||||
b->nins += nins - (i1-i);
|
|
||||||
free(b->ins);
|
|
||||||
b->ins = ib;
|
|
||||||
return ir;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* register allocation
|
/* register allocation
|
||||||
|
|
Loading…
Add table
Reference in a new issue