[LLVMdev] Requiring LiveIntervals

Chris Lattner sabre at nondot.org
Tue Sep 20 21:19:52 PDT 2005


On Tue, 20 Sep 2005, Chris Lattner wrote:
>>> would like it, I would have no problem promoting it to be a public
>>> interface.  Let me know what you'd like.
>> 
>> A public interface. the interface of LiveIntervals is more convenient
>> than LiveVariables when building build the interference graph, which
>> is necessary for the family of Chaitin style register allocators.
>
> Ok.

This is now a public interface in include/llvm/CodeGen.

-Chris

>> Actually I am surprised that some common graph like the interference
>> graph and the data dependence graph (a.k.a. data precedence graph or
>> scheduling graph) is not available in CodeGen, except the control flow
>> graph. Though they are not difficult to construct, it's tedious that
>> every target back-end has to re-build them.
>
>> Perhaps:
>> 1) All existing targets share the register allocators in CodeGen. There
>> is no need for ad hoc register allocator, and therefore no
>> interference graph analysis.
>
> Yes, all of the register allocators are currently common, living as 
> lib/CodeGen/RegAlloc*.  We have no target-independent graph coloring register 
> allocator implementation distributed with LLVM, and nothing else needs a real 
> interference graph.
>
>> 2) No target-independent instruction scheduling code, and therefore no
>> dependence graph.
>
> The scheduling work is being done on the SelectionDAG infrastructure, whose 
> dependence graphs are defined by the include/llvm/CodeGen/SelectionDAG*.h 
> files.
>
> Note that these nodes represent the code itself before being laid out in 
> basic blocks.  It is not intended to represent dependences between machine 
> instructions.
>
> -Chris
>
>

-Chris

-- 
http://nondot.org/sabre/
http://llvm.org/




More information about the llvm-dev mailing list