This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]