The code looks reasonable to me, but others on cfe-commits know Sema better 
than I.

clang generally has a high bar for adding warnings. To evaluate a warning, we 
usually run it on some large code base and measure true and false positives and 
then compare the severity of the true positives with the noise from the false 
positives. Do you have any data on what the warning warns on, how serious the 
bugs it finds are, and if there are any common patterns this warns on but 
shouldn't?


================
Comment at: include/clang/Basic/DiagnosticSemaKinds.td:435
@@ -432,1 +434,3 @@
+  "%select{destination|source}2; expected %3">,
+  InGroup<SizeofPointerMemaccess>;
 def warn_strlcpycat_wrong_size : Warning<
----------------
I wonder if this should have its own flag instead of going into the existing 
group – else this might be annoying for people who have the current version of 
this warning enabled. I'm not sure though. (Do others have opinions?)

================
Comment at: lib/Sema/SemaChecking.cpp:4741
@@ +4740,3 @@
+
+static bool typesAreCompatibleIgnoreQualifiers(ASTContext &Context,
+                                               QualType &LHSType,
----------------
It feels like we should have a function for this already…I couldn't find one 
either though.

================
Comment at: lib/Sema/SemaChecking.cpp:4758
@@ +4757,3 @@
+                                            QualType &EltType) {
+    QualType LHSType =
+        Context.getCanonicalType(SizeOfArgFactorTy).getUnqualifiedType();
----------------
clang uses a 2 space indent. Please run clang-format on your patch.

================
Comment at: lib/Sema/SemaChecking.cpp:4916
@@ +4915,3 @@
+                                << EltType << Dest->getSourceRange()
+                                << LenExpr->getSourceRange());
+    }
----------------
Should this also emit a "cast to (void*) to suppress warning" fixit like other 
warnings here do?

If the dest is an array with a known size, and the literal is the size of the 
array, should we suggest sizeof(variablename) instead?

================
Comment at: test/SemaCXX/warn-memset-bad-sizeof.cpp:4
@@ +3,3 @@
+
+#include <stddef.h>
+
----------------
Tests should generally be standalone and not include any headers. What do you 
need this for? size_t? If so, do `typedef __SIZE_TYPE__ size_t;` instead.

http://reviews.llvm.org/D8881

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to