NoQ accepted this revision.
NoQ added a comment.
This revision is now accepted and ready to land.

Ok, let's commit this and see how to fix it later. I still think it's more 
important to come up with clear rules of who is responsible for initializing 
fields than making sure our warnings are properly grouped together.

> ideally we wouldn't like to have a warning for an object (`t`) and a separate 
> warning for it's field (`t.bptr.x`)

I don't quite understand this. How would the first warning look like? What 
would it warn about?



================
Comment at: lib/StaticAnalyzer/Checkers/UninitializedObjectChecker.cpp:669-671
+  Optional<nonloc::LazyCompoundVal> CurrentObject = getObjectVal(Ctor, 
Context);
+  if (!CurrentObject)
+    return false;
----------------
All uses of `getObjectVal` so far are followed by retrieving the parent region 
from the `LazyCompoundVal`. Why do you need to obtain the `LazyCompoundVal` in 
the first place, i.e. do the second `getSVal` "for '*this'" in `getObjectVal`? 
Why not just operate over the this-region on the current Store? I think there 
isn't even a guarantee that these two regions are the same. Like, in this case 
they probably will be the same, but we shouldn't rely on that.


https://reviews.llvm.org/D48436



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

Reply via email to