This is the mail archive of the
gcc-patches@gcc.gnu.org
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 missed
but I couldn't tell where undo coalescing is handled,
which makes the optimistic coalescing different from simple aggressive
coalescing
(and more expensive in compile time too).
It 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:
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.