This is the mail archive of the
mailing list for the GCC project.
Re: [ira] patch for optimistic register coalescing implementation
Seongbae Park wrote:
I very quickly skimmed through the patch, so I could have easily missedIt is done at the end of ira-color.c::assign_hard_reg where there is
printf with "Pushing ". If the coalesced allocnos failed to get a
hard-registers, they all are uncoalesced and put onto the stack (regular
coalescing based on hard register and conflicting costs works after
that). There are few things to investigate:
but I couldn't tell where undo coalescing is handled,
which makes the optimistic coalescing different from simple aggressive
(and more expensive in compile time too).
o Different strategies of splitting (not all at once) in the failure
case. I don't think it can give visible improvement because coalescing
based on register costs works well. Also other strategies will slow
down RA (may be significantly in some cases).
o Removing the pseudo-register moves in RA instead of assigning the same
hard register to the coalesced allocnos which usually results in trivial
removing the same hard register move in the post-reload pass. I don't
think removing the pseudo-register moves in RA will be more profitable.
With saving the moves in RA if the reload decides to spill a
pseudo-register, pseudo-registers coalesced with given pseudo-register
will still stay in the hard-register (which usually is more profitable
than spilling all coalesced pseudo-registers).
Can you point me to which part of the code handles that ?
Apology if I missed the obvious.