I implemented a live range splitting phase that splits Tmps that are live only for cold uses. It's a performance regression, because it turns out that IRC isn't sufficiently graceful at coalescing to handle being overloaded with even more temporaries. The performance losses all came from programs that would get slightly worse register allocation when both the versions of the Tmp got spilled. Perhaps one day we could solve that with spill coalescing. But this patch didn't speed *anything* up, which casts a lot of doubt about the profitability of this approach. But in the process of writing the phase, I added some utilities to Air. I want to land those utilities.
Created attachment 304181 [details] the patch I want to at least upload this useful code.
Comment on attachment 304181 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=304181&action=review r=me > Source/JavaScriptCore/b3/air/AirBreakCriticalEdges.h:34 > +void breakCriticalEdges(Code&); nice