[LLVMdev] Supporting Complex Register Allocation Constraints (PBQP Allocator Status Update)

Lang Hames lhames at gmail.com
Mon Sep 20 16:11:49 PDT 2010


Hi Jakob,


> Out of curiosity, how are you dealing with live range splitting and
> coalescing in PBQP? I know you added the LoopSplitter pass.
>
> For linear scan in LLVM we are going in the direction of aggressive
> coalescing before allocation, and on-demand splitting during allocation.
>
> I know that other allocators use no early coalescing, and coalesce during
> allocation.


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.

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.

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.

Cheers,
Lang.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100921/add0835d/attachment.html>


More information about the llvm-dev mailing list