Bill Coffman <[EMAIL PROTECTED]> wrote:
> Interesting.  I did a little more research, and checked out a fresh
> CVS tree.

I've committed the tailcall patch a minute ago with that one line
changed in reg_allog.c - please rediff.

> ... I did nothing more than insert a conflict checker into
> reg_alloc.c

> The routine you mentioned, allocate_wanted_regs() doesn't assign
> wanted regs if in conflict, but as far as I can tell, there's no check
> on the integrity of precolored nodes.  Not quite sure what the correct
> behaviour is for allocator, when it's given conflicts.

These precolored wanted_regs are created for function arguments and
return values only (and for registers used during function calls).
And indeed, if there is a conflict the register shouldn't get a color.
Seems to work now, as I don't get these test failures anymore.

> I saw 'K' compounded key somewhere, but don't know what it is.

It's a notion for a key like in:

  set P1, P2["abc" ; 1]

  set_p_p_kc

The last arg is a r->set := 'K' and points to a chain of other
SymRegs. It's actually a PMC entry in the contant table, where the color
is the index in constants.

>... I know
> reg_alloc.c pretty well though.  Offhand I'd say it's not handled in
> reg_alloc.  Maybe it should be?

No, that's ok. Constants are handled in imcc/pbc.c and aren't affected
by reg_alloc.c at all.

> ~Bill

leo

Reply via email to