[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