[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