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