mirror of
git://c9x.me/qbe.git
synced 2026-04-05 18:09:47 +00:00
my assumptions in dopm() were wrong
revert commit d0e9e3ada106dfe8dcda7a0099b341000f00afb2.
This commit is contained in:
parent
390c5addd6
commit
2db68eed12
18
lisc/rega.c
18
lisc/rega.c
@ -212,8 +212,8 @@ static Ins *
|
||||
dopm(Blk *b, Ins *i, RMap *m)
|
||||
{
|
||||
RMap m0;
|
||||
int n, r, r1, t;
|
||||
Ins *i1, *ip;
|
||||
int n, r, r1, t, nins;
|
||||
Ins *i1, *ib, *ip, *ir;
|
||||
|
||||
m0 = *m;
|
||||
i1 = i+1;
|
||||
@ -251,14 +251,22 @@ dopm(Blk *b, Ins *i, RMap *m)
|
||||
r = RBASE(ip->arg[0].val);
|
||||
if (rfind(m, r) == -1)
|
||||
radd(m, r, r);
|
||||
*ip = (Ins){ONop, R, {R, R}};
|
||||
}
|
||||
pmgen();
|
||||
#ifdef TEST_PMOV
|
||||
return 0;
|
||||
#endif
|
||||
assert(curi-insb <= i1-i);
|
||||
return memcpy(i, insb, (curi-insb) * sizeof(Ins));
|
||||
nins = curi-insb;
|
||||
ib = alloc((b->nins + nins - (i1-i)) * 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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user