[LLVMdev] InlineSpiller Questions

dag at cray.com dag at cray.com
Wed Sep 19 10:49:09 PDT 2012


Jakob Stoklund Olesen <stoklund at 2pi.dk> writes:

>> If we decide to spill r3, we call traceSiblingValue to find the original
>> def (the load).  After traceSiblingValue we have the load instruction to
>> define r1 and the value number information for r3.  We don't have the
>> value information from r2 as far as I can tell.
>> 
>> Is that correct?
>
> Sounds right.

Oh good, I'm understanding something.  :)

>>  Does that information exist anywhere or is it lost after
>> traceSiblingValue terminates?
>
> The r2 value would be cached in the SibValueInfo Deps array for the r1
> value.

So if there are multiple values between r2 and r3 (r2.1, r2.2, etc.) I
would just follow the chains implied by the SibValueInfo Deps array?
Basically, I want to find all of the live ranges related to r1.

>> What does propagateSiblingValue have to do with all of this?
>
> It's a performance optimization to handle the quadratic number of CFG
> edges appearing after tail-duplicating an indirectbr.

Ok, so it just makes  traceSiblingValue faster.  Thanks for your help Jakob!

                           -Dave



More information about the llvm-dev mailing list