[LLVMdev] How to update LiveInterval information of newly inserted machine basic block

Andrew Trick atrick at apple.com
Sat Jan 4 11:28:22 PST 2014

On Jan 4, 2014, at 4:38 AM, Haishan <hndxvon at 163.com> wrote:

>  At 2014-01-04 06:11:38,"Jakob Stoklund Olesen" <stoklund at 2pi.dk> wrote:
> On Jan 3, 2014, at 1:52 PM, Andrew Trick <atrick at apple.com> wrote:
>> He really just wants to rerun LiveIntervals analysis, but LiveVariables is no longer available. Would it work just to clear all the intervals rerun LiveIntervals::computeVirtRegs after all the CFG transforms are complete?
> Yes, I should think so.
> /jakob
> Thank you very much for your talk.
> I think I could append more information about updating LiveIntervals.
> 1. It works well if I just use from step1 to step3, without step4.
> 2. In step4, I firstly use UnreachableBlockElim pass to delete OldMBB.
> Then, remove all intervals and recompute all the virtual registers' LiveIntervals.
> 3. I debug source code in LiveRangeCalc.cpp and copy partial code shown following.
> /// LiveRangeCalc.cpp
> ...
> #ifndef NDEBUG
>     if (MBB->pred_empty()) {
>       MBB->getParent()->verify();
>       llvm_unreachable("Use not jointly dominated by defs.");
>     }
> ...
> /// LiveRangeCalc.cpp
> This MBB is the first block of MachineFunction. That's to say, This MBB doesn't have predecessor. It is reasonable?
> From debug information, this unreachable error is generated from recompute a virtual register which isn't used or defined in this MBB. But this virtual register, in NewMBB,  is defined in a machine instruction which is copied from OldMBB.
> So I am puzzled. 
> Then, I do as Andy's suggestion, but it doesn't work, and it has same error.
> Could you have any suggestion?
> Thank you very much again.

Incrementally updating the live intervals will be complicated. You may be able to completely recompute them by clearing all VirtRegIntervals, then calling computeVirtRegs.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140104/b4e59f87/attachment.html>

More information about the llvm-dev mailing list