This is the mail archive of the 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
(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]