[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