xazax.hun added a comment.

In http://reviews.llvm.org/D13099#260531, @seaneveson wrote:

> There is an issue where pointers to the object (this) should cause it to be 
> invalidated, but don't since TK_PreserveContents has been set.
>
> For example:
>
>   class B;
>   class A {
>     B b;
>     const foo();
>   };
>   class B {
>     A *ptr_a;
>   }
>  
>   A a;
>   a.b.ptr_a = &a;
>   a.foo();
>
>
> The method foo might modify 'this' via the object b, but 'this' will not be 
> invalidated as foo is const.
>
> Again I'm not sure this is worth checking for, based on the assumption that a 
> reasonable const method won't modify the relevant object. What do people 
> think?


I think, this can happen every time, when tehere is a cycle of pointers. Even 
if you do not deal with this case I think it would be great to have an XFAIL 
test with a fixme that describes this limitation.

In case we would like to fix this issue in the future, I think 
TK_PreserveContents is too weak. It would be great to have more control, when 
to preserve the content. E.g. a trait which describes that, this region can not 
be invalidated by that pointer. It is a good question whether a more precise 
solution can be efficient enough though.


http://reviews.llvm.org/D13099



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to