Szelethus marked 5 inline comments as done.
Szelethus added inline comments.


================
Comment at: 
lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h:259
+  return T->isBuiltinType() || T->isEnumeralType() ||
+         T->isMemberPointerType() || T->isBlockPointerType();
+}
----------------
I'm not sure this is correct -- do block pointers belong here? Since their 
region is not `TypedValueRegion`, I though they better fit here.


================
Comment at: 
lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h:261-265
+inline bool isLocType(const QualType &T) {
+  return T->isAnyPointerType() || T->isReferenceType() ||
+         T->isBlockPointerType();
+}
+
----------------
NoQ wrote:
> We have a fancy static `Loc::isLocType()`.
Oh, good to know! However, it also returns true for `nullptr_t`, which also 
happens to be a `BuiltinType`. I'd like to keep `isPrimitiveType` and (the now 
renamed) `isDereferencableType` categories disjunctive. Primitive types require 
no further analysis other then checking whether they are initialized or not, 
which is true for `nullptr_t` objects.


================
Comment at: 
lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp:240-244
+    if (Tmp->getRegion()->getSymbolicBase())
       return None;
-    }
 
-    V = State->getSVal(*Tmp, DynT);
+    DynT = DynT->getPointeeType();
+    R = Tmp->getRegionAs<TypedValueRegion>();
----------------
NoQ wrote:
> This code seems to be duplicated with the "0th iteration" before the loop. I 
> guess you can put everything into the loop.
I moved some code into the loop, but I think that I really need a 0th iteration 
to make the code readable.


https://reviews.llvm.org/D51057



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

Reply via email to