On Wed, 2020-08-26 at 15:58 -0500, Segher Boessenkool wrote: > On Tue, Aug 25, 2020 at 02:35:51PM -0600, Jeff Law wrote: > > I've gone back and forth on pre allocation splitting as well as > > post-allocating > > splitting and re-allocation. I could argue either side of that discussion > > -- > > If you end up wanting something split it is best to do it early. The problem with early splitting is you don't know if you want to split or not. You're making an educated guess how the split will interact with register allocation. If you guess wrong, often the allocator will save you and assign the split pseudos to the same hard reg, but not always. Been there more than once.
> But if > you cannot predict well if you want it split eventually, there is no > good way to do this afaics :-( Precisely. In the old LRS bits (Meissner with a little help from me, circa 1995) we actually recorded the original pseudo as well as all its split versions in a new RTL node. We could then undo the splitting if it wasn't helpful. IIRC we also use that node to improve debugging of objects that were subject to LRS. It worked reasonably well, but was fairly hard to maintain. I think we managed to drop in some of the infrastructure into EGCS and shipped to to our customer, but I don't think we ever got the main pass submitted. Eventually it got dropped as it was fairly painful to maintain. jeff