[LLVMdev] How to update LiveInterval information of newly inserted machine basic block
Andrew Trick
atrick at apple.com
Tue Dec 31 12:36:21 PST 2013
On Dec 31, 2013, at 3:52 AM, Haishan <hndxvon at 163.com> wrote:
> Hi,
> I insert a new machine basic block(MBB) before Greedy Register Allocation, after Simple Register Coalescing. But I encounter a fatal
> error "regalloc = ... not currently supported with -O0". I use command line with opt level O2, not O0.
> The probable reason of this error is that no LiveInterval information for newly MBB which is used by Register Allocation.
> And, LiveIntervals depend on LiveVariables which require the machine function to be in SSA form.
> However, in this case, the modified machine function(including newly inserted MBB) is not SSA form any more.
> So, how to update LiveInterval information of newly MBB?
> Could someone help me with that?
> Thank you very much in advance.
> -Haishan
Yes, I think error that means LiveIntervals have been invalidated. It is supposed to be user-friendly but should probably be changed to be more specific.
If you schedule a new pass between coalescing and regalloc, it needs to preserve LiveIntervals analysis. There are utilities to recompute live intervals for individual virtual registers. See LiveIntervals::computeVirtRegs. LiveVariables is not actually needed to update live intervals. It is only added as a requirement to make sure it runs before the 2-address pass.
-Andy
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131231/2d5d3244/attachment.html>
More information about the llvm-dev
mailing list