NoQ added a comment.

I guess this makes sense. The results look good. I'm slightly worried that 
we're fighting the symptoms rather than the root cause here: why were these 
values tracked that far in the first place when we already have no interest in 
tracking them at the end of the function? I.e., i suspect that your "mild 
tracking mode" would get rid of a lot of those automagically.



================
Comment at: clang/test/Analysis/uninit-vals.c:181
 void testUseHalfPoint() {
-  struct Point p = getHalfPoint(); // expected-note{{Calling 'getHalfPoint'}}
-                                   // expected-note@-1{{Returning from 
'getHalfPoint'}}
-                                   // expected-note@-2{{'p' initialized here}}
+  struct Point p = getHalfPoint(); // expected-note{{'p' initialized here}}
   use(p); // expected-warning{{uninitialized}}
----------------
Huh, so there's not even a note in `getHalfPoint()`, just calling..returning? 
This definitely needs some attention from `NoStoreFuncVisitor`.

Generally, i think this is probably the single place where we do really want 
some info about what happens in `getHalfPoint()`. The report that consists only 
of "p is initialized..." and "...p is uninitialized" is pretty weird. Btw, 
could you write down the full warning text in this test? How bad this actually 
is?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D64232



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

Reply via email to