NoQ added a comment.

Thanks! A surprise, to be sure :) I'll try to test this on my set of projects 
as well :)

> Most of the extra results are not false positive due to the less invalidation 
> but other reasons, so we could focus on those problems instead of them being 
> hidden.

Could you share reproducible examples for these, probably in the form of FIXME 
tests? Given that they are "regressions", they are easy to creduce down to a 
small repro by using the test "there is still a change in behavior on this 
file".



================
Comment at: lib/StaticAnalyzer/Core/CallEvent.cpp:320-321
+        ETraits.setTrait(
+            UseBaseRegion ? MR->getBaseRegion() : MR,
+            RegionAndSymbolInvalidationTraits::TK_PreserveContents);
+    }
----------------
I suspect that the trait for non-base `MR` would never be read. The only place 
where this trait is accessed is in RegionStore.cpp where it asks whether the 
trait is applied to a cluster base, which is always a base region.


================
Comment at: test/Analysis/call-invalidation.cpp:146
   useAnything(&(s1.y));
-  clang_analyzer_eval(s1.x == 1); // expected-warning{{UNKNOWN}}
+  clang_analyzer_eval(s1.x == 1); // expected-warning{{TRUE}}
 }
----------------
Let's leave at least one positive check around, eg. demonstrate that 
invalidation does happen for `s1.y` here.


Repository:
  rC Clang

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

https://reviews.llvm.org/D57230



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

Reply via email to