[llvm] r176408 - recommit r172363 & r171325 (reverted in r172756)
Nuno Lopes
nunoplopes at sapo.pt
Mon Mar 4 09:27:51 PST 2013
>> Shuxin: I'm not breaking any assumption here.
> If you don't think you break the assumption, tell us your immediate
> reaction to
> the class name "ObjectSizeOffsetVisitor".
>
> It seem so odd to me that xxx_ObjectWhatever() return a meaningful value
> however we have no idea which
> object it is talking about.
>
> >If you notice, we already do a similar analysis for select instructions.
> Show me the code.
> On the other hand, there are some code showing similar usage
> dose not necessarily mean that piece of code is correct, or it is good
> practice to write the code this way.
>
> This is contrived usage of these functions:
> p1 = &object1.field1
> p2 = &object2.field2
> p3 = phi(p1, p2);
>
> get-object-offset() would return offset(object.filed1). the optimizer
> randomly take object1 as
> the "underlying object", and further analysis reveals that the location of
> &object1.field1 is either used as
> char or int32, a contrived type-based alias alias would mistakenly make a
> conclusion that *p3
> will not alias a load of floating point type, which could be wrong because
> object2.field2 could be of fp type.
You are mixing two concepts here:
1) Compute the size of an object pointed-to by a pointer
2) Identifying to which object a pointer points to.
For some reason you are assuming that 1) implies 2), which is not correct
(nor /vice versa/).
Therefore, the "aggressive" alias analysis you propose above doesn't make
sense.
FYI, the semantics of @llvm.objectsize I've been describing matches exactly
that of gcc's __bultin_object_size(). If there's a bug somewhere, that's in
the documentation.
Nuno
More information about the llvm-commits
mailing list