[LLVMdev] [PATCH] Re: Pluggable Register Coalescers

Evan Cheng evan.cheng at apple.com
Wed Jul 18 13:29:10 PDT 2007


On Jul 18, 2007, at 11:19 AM, Evan Cheng wrote:

>
> On Jul 17, 2007, at 9:28 AM, David Greene wrote:
>>
>> [...]
>> 00369   // If the intervals were swapped by Join, swap them back so
>> that the
>> register
>> 00370   // mapping (in the r2i map) is correct.
>> 00371   if (Swapped) SrcInt.swap(DstInt);
>>
>> Whoops!  At this point repSrcReg is not consistent with SrcInt and  
>> the
>> same goes for repDstReg!
>>
>> 00372   li_->removeInterval(repSrcReg);
>> 00373   r2rMap_[repSrcReg] = repDstReg;
>>
>> Does this code get us into trouble due to the inconsistency created
>> above?
>>
>> Is this a bug?  There's a lot of indirection going on here and it's
>> hard to
>> keep track of it.
>
> I am not sure. I will poke at it a bit. Thanks.

It's not a bug. In most cases the coalescer merges the live interval  
of the RHS of the copy to LHS. If not, they are swapped. At this  
point repSrcReg is indeed the register that represent the register  
that's being merged. This code is really hard to follow, I know. <sigh>

Evan

>
> Evan
>
>>
>>                                                         -Dave
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> 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