make phi-class handling more local

The phi classes are no longer in a union-find
structure, instead each temporary argument of
a phi node gets a pointer to it.  The hinting
of the phi node is then shared with its the
one of its arguments.  When liveness proceeds
and finds out that two elements with same
hinting (a phi node and one of its arguments
or two arguments of the same phi node)
interfere, one of them has its phi pointer
reset, that way, the hinting won't be shared.
This commit is contained in:
Quentin Carbonneaux 2015-10-31 23:39:52 -04:00
parent 5b54910adc
commit 7abf421ea2
6 changed files with 23 additions and 59 deletions

View file

@ -547,6 +547,8 @@ DoOp:
arg[i] = parseref();
if (req(arg[i], R))
err("invalid instruction argument");
if (op == -1 && rtype(arg[i]) == RTmp)
tmp[arg[i].val].phi = r.val;
i++;
t = peek();
if (t == TNL)