Hi Jakob,<div><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Out of curiosity, how are you dealing with live range splitting and coalescing in PBQP? I know you added the LoopSplitter pass.<br>

<br>
For linear scan in LLVM we are going in the direction of aggressive coalescing before allocation, and on-demand splitting during allocation.<br>
<br>
I know that other allocators use no early coalescing, and coalesce during allocation.</blockquote><div><br></div><div>The PBQP allocator uses the aggressive coalescer and optionally adds coalescing costs for any remaining copies to the PBQP problem (if you use -pbqp-coalescing). Unfortunately relying on PBQP's coalescing alone is not an option - the graphs coming out of PHI elimination are very large and without aggressive coalescing to bring the size down the heuristics don't cope well.</div>
<div><br></div><div>Currently the PBQP allocator does not do any splitting, however I expect that it should be easy to add support for on-demand splitting, and I'll be looking into it soon-ish.</div><div><br></div><div>
I haven't had time to work on the LoopSplitter recently. It looks like SplitKit has subsumed LoopSplitter's functionality. If that's the case then I can go ahead and kill off LoopSplitter.</div><div> </div><div>
Cheers,</div><div>Lang.</div></div><br></div>