summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-04-27 18:48:59 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-04-27 18:48:59 +0000
commitede9d33cdeb453c686d9403bb359b27f01d48ce2 (patch)
tree861b0e17487bbb0885fc565f99922c4c1a6ab26a /clang
parent39b3a1ef7f29218854a104c1361bc5bde7fcb8fb (diff)
downloadbcm5719-llvm-ede9d33cdeb453c686d9403bb359b27f01d48ce2.tar.gz
bcm5719-llvm-ede9d33cdeb453c686d9403bb359b27f01d48ce2.zip
Heh, funny thing, 'void' isn't a POD type. Nice of us to suggest it to
silence this warning. ;] Fixed that obvious bug and added a bit more testing as well. llvm-svn: 130318
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp2
-rw-r--r--clang/test/SemaCXX/warn-non-pod-memset.cpp11
2 files changed, 11 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 6b219612d14..7ee0eac370b 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -1810,7 +1810,7 @@ void Sema::CheckMemsetArguments(const CallExpr *Call) {
QualType DestTy = Dest->getType();
if (const PointerType *DestPtrTy = DestTy->getAs<PointerType>()) {
QualType PointeeTy = DestPtrTy->getPointeeType();
- if (!PointeeTy->isPODType()) {
+ if (!PointeeTy->isPODType() && !PointeeTy->isVoidType()) {
DiagRuntimeBehavior(
Dest->getExprLoc(), Dest,
PDiag(diag::warn_non_pod_memset)
diff --git a/clang/test/SemaCXX/warn-non-pod-memset.cpp b/clang/test/SemaCXX/warn-non-pod-memset.cpp
index 03e626e7087..97bbdc27cc4 100644
--- a/clang/test/SemaCXX/warn-non-pod-memset.cpp
+++ b/clang/test/SemaCXX/warn-non-pod-memset.cpp
@@ -32,7 +32,16 @@ void test_warn() {
// expected-note {{explicitly cast the pointer to silence this warning}}
}
-void test_nowarn() {
+void test_nowarn(void *void_ptr) {
+ int i, *iptr;
+ float y;
+ char c;
+
+ memset(&i, 0, sizeof i);
+ memset(&iptr, 0, sizeof iptr);
+ memset(&y, 0, sizeof y);
+ memset(&c, 0, sizeof c);
+ memset(void_ptr, 0, 42);
memset(&s1, 0, sizeof s1);
memset(&s2, 0, sizeof s2);
memset(&s3, 0, sizeof s3);
OpenPOWER on IntegriCloud