[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