simplify rega's dopm()

This commit is contained in:
Quentin Carbonneaux 2015-08-22 10:18:40 -04:00
parent 762fb723e5
commit 1eb8758824

View file

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