On Tue, Apr 29, 2008 at 6:22 PM, Mark Mitchell <[EMAIL PROTECTED]> wrote: > Vladimir, if you feel that Peter's code cannot be used directly in IRA, > would you please explain why not?
I think he already has explained, see http://gcc.gnu.org/ml/gcc/2008-04/msg00730.html Having looked at IRA a bit, I think I have to agree with Vlad that Peter's code is not easily adapted to IRA. Peter's code works for a single, immutable conflict graph for the whole function. IRA works with inter-region and intra-region conflicts (as far as I understand, documentation in ira-conflict.c would be welcome), so the sorting trick that Peter uses, doesn't translate one-to-one to Vlad's allocator. Having said that, I think the "square" approach with mirror_conflicts() that IRA currently has, is a big step backward from what we have now. IRA should at least have a representation for conflicts that does not duplicate information unnecessary. The bits that seem to be bad in this respect are build_conflict_bit_table() and mirror_conflicts(). It's not clear to me how these are used, but it looks like you can end up building a square conflict graph for the whole function, like GCC did before Peter's work. This could be a huge memory and speed regression if it isn't addressed. Another note: IRA uses VARRAYs, and I was under the impression we are trying to move away from those. Vlad, please use VECs instead. Gr. Steven