[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