[LLVMdev] Coalescing and VNInfo

Evan Cheng evan.cheng at apple.com
Tue Sep 25 10:25:47 PDT 2007


LLVM is assuming this:
     struct InstrSlots {
       enum {
         LOAD  = 0,
         USE   = 1,
         DEF   = 2,
         STORE = 3,
         NUM   = 4
       };

So VNI->def is always modulo 2. For coalescing, it's checking if the  
RHS is live at the "use" cycle. So it's checking VNI->def-1.

Evan

On Sep 25, 2007, at 8:55 AM, David Greene wrote:

> On Tuesday 25 September 2007 10:49, David Greene wrote:
>> I've hit a bug in a refactored version of coalescing and I'm  
>> trying to
>> understand what is going on.  In particular, I'm curious about this
>> line in SimpleRegisterCoalescing.cpp:
>>
>> 00710       LHSValsDefinedFromRHS[VNI] =
>> RHS.getLiveRangeContaining(VNI->def-1)->valno;
>>
>> Why VNI->def-1?  The bug I'm seeing is that RHS returns a NULL
>> LiveRange because it doesn't contain VNI->def-1:
>>
>> %reg1093,0 = [5750,5754:2)[5754,5782:1)[5782,5858:0)[5868,5870:0)
>> 0 at 5782-(5858 5870) 1 at 5754-(5778) 2 at 5750
>
> I should aff that VNI->def is 5750 which is in the interval.
>
>                                                           -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