NoQ added a comment.

I'm glad you brought this stuff up, found two more bugs to fix.

In D54563#1317678 <https://reviews.llvm.org/D54563#1317678>, @Szelethus wrote:

> Can you add tests for that just in case? :)


The test works, but i noticed that we aren't respecting const references. That 
is, we believe that passing the object by const reference or pointer may reset 
it. I guess i'll make a separate commit.



================
Comment at: test/Analysis/use-after-move.cpp:260-262
     for (int i = 0; i < bignum(); i++) { // expected-note {{Loop condition is 
false. Execution jumps to the end of the function}}
       rightRefCall(std::move(a));        // no-warning
     }
----------------
Szelethus wrote:
> NoQ wrote:
> > This would have been the test for our case, but in this test the function 
> > has a body and will not be evaluated conservatively.
> Hmm, since those are all STL containers, we should be able to have their 
> definition? Or only with `c++-container-inlining=true`? Take this as more of 
> a question than anything else.
Yeah, assuming that we only need containers.

As usual, i expect only good things to happen when we inline them. Say, if a 
field is overwritten in the inlined call, this would also trigger 
`checkRegionChanges`. And i doubt that in these examples there will be a path 
through the function that leaves the object entirely untouched.

As a side note, i doubt that we'll actually react to field assignment, because 
this checker's `checkRegionChanges` callback doesn't account for that: it only 
iterates through explicit regions. I guess this needs fixing.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D54563/new/

https://reviews.llvm.org/D54563



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

Reply via email to