[LLVMdev] PROPOSAL: struct-access-path aware TBAA

Shuxin Yang shuxin.llvm at gmail.com
Tue Mar 12 19:56:27 PDT 2013

Based on my understanding of her design, following is one obtuse 
motivating example:

class A;
class B;

int foo(A* p, B* q) {

    p->a_int_field = 2;
    q->another_int_field = 3;
    return p->a_int_field; // !!!!!

the *-statement can be optimized into "return 2" if optimizer can prove 
type-A does not include type-B,
and type-B does not include type-A either.

On 03/12/2013 07:48 PM, Krzysztof Parzyszek wrote:
> On 3/12/2013 9:43 PM, Shuxin Yang wrote:
>> Note that, to make base/offset/size more effective, analyzer need to
>> track the base along the UD chains
>> as far as possible. In this case, the "bases" for the memory are "p",
>> instead of &vd and &vc, respectively.
> If the base pointers are the same, then offset+length for each access 
> is sufficient to determine aliasing.  No type information is needed 
> for this.  I'm still not sure exactly what this proposal is supposed 
> to address, but yes---given two base pointers (possibly not equal), 
> the structural paths to the accessed objects are not sufficient.
> -Krzysztof

More information about the llvm-dev mailing list