[LLVMdev] LiveInterval Splitting & SubRegisters

Evan Cheng evan.cheng at apple.com
Thu Jan 24 17:15:32 PST 2008



On Jan 23, 2008, at 2:40 PM, David Greene <dag at cray.com> wrote:

> On Wednesday 23 January 2008 02:01, Evan Cheng wrote:
>> On Jan 22, 2008, at 12:23 PM, David Greene wrote:
>>> Evan,
>>>
>>> Can you explain the basic mechanics of the live interval splitting
>>> code?
>>> Is it all in LiveIntervalAnalysis.cpp under addIntervalsForSpills
>>> and child
>>> routines?  What is it trying to do?
>>
>> It's splitting live intervals that span multiple basic blocks. That
>> is, when an interval is spilled, it introduce a single reload per
>> basic block and retarget all the uses to use the result of the single
>> reload. It does not (yet) split intra-bb intervals.
>
> How is this different from the way the spiller used to work, looking
> for reloads it could reuse?  Didn't that have the same goal of not
> reloading a spilled value multiple times in a basic block?

Right. But that should not be spiller's job. It's also dependent on  
arbitrary register allocation order. Reload and spill folding makes it  
more complicated.

Evan
>
>
>                                            -Dave
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list