erik.pilkington planned changes to this revision.
erik.pilkington added a comment.

In https://reviews.llvm.org/D49112#1158793, @thakis wrote:

> lgtm assuming you ran this on some large code base to make sure it doesn't 
> have false positives.


Sorry for the delay here, I was running this on some very large internal code 
bases. This is overwhelmingly true-positive, but there are 2 improvements I 
want to make here before landing this:

- Suppress the diagnostic in cases like `memset(ptr, 0xff, PADDING)`, when 
PADDING is a macro defined to be 0.
- Some platforms #define bzero to `__builtin_memset`, so we should recognize 
when we're in a macro expansion to bzero and emit a more accurate diagnostic 
for `bzero(ary, 0);`. We might as well add support for `__builtin_bzero` too.



================
Comment at: clang/lib/Sema/SemaChecking.cpp:7975-7976
+static void CheckMemsetSizeof(Sema &S, unsigned BId, const CallExpr *Call) {
+  if (BId != Builtin::BImemset)
+    return;
+
----------------
aaron.ballman wrote:
> This functionality should apply equally to `wmemset()` as well, should it 
> not? The only difference I can think of would be that the type should be cast 
> to `wchar_t` instead of `int` to silence the warning.
Looks like clang doesn't have a builtin for wmemset, its just defined as a 
normal function. I suppose that we could still try to diagnose calls to 
top-level functions named wmemset, but thats unprecedented and doesn't really 
seem worth the trouble.


https://reviews.llvm.org/D49112



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

Reply via email to