summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2017-05-05 16:11:08 +0000
committerNico Weber <nicolasweber@gmx.de>2017-05-05 16:11:08 +0000
commitd7ba86b6bf54740dd4007e65a927151cb9f510b4 (patch)
treef74f2de716ddadb5b2a99864578e05bb341aceb7 /clang/test
parent8b66b00ecd04c3d37fcfa6bfd03595365c7efd30 (diff)
downloadbcm5719-llvm-d7ba86b6bf54740dd4007e65a927151cb9f510b4.tar.gz
bcm5719-llvm-d7ba86b6bf54740dd4007e65a927151cb9f510b4.zip
Introduce Wzero-as-null-pointer-constant.
Add an opt-in warning that fires when 0 is used as a null pointer. gcc has this warning, and there's some demand for it. https://reviews.llvm.org/D32914 llvm-svn: 302247
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/SemaCXX/warn-zero-nullptr.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/warn-zero-nullptr.cpp b/clang/test/SemaCXX/warn-zero-nullptr.cpp
new file mode 100644
index 00000000000..edd2a759b70
--- /dev/null
+++ b/clang/test/SemaCXX/warn-zero-nullptr.cpp
@@ -0,0 +1,27 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s -Wzero-as-null-pointer-constant -std=c++11
+
+struct S {};
+
+int (S::*mp0) = nullptr;
+void (*fp0)() = nullptr;
+void* p0 = nullptr;
+
+int (S::*mp1) = 0; // expected-warning{{zero as null pointer constant}}
+void (*fp1)() = 0; // expected-warning{{zero as null pointer constant}}
+void* p1 = 0; // expected-warning{{zero as null pointer constant}}
+
+// NULL is an integer constant expression, so warn on it too:
+void* p2 = __null; // expected-warning{{zero as null pointer constant}}
+void (*fp2)() = __null; // expected-warning{{zero as null pointer constant}}
+int (S::*mp2) = __null; // expected-warning{{zero as null pointer constant}}
+
+void f0(void* v = 0); // expected-warning{{zero as null pointer constant}}
+void f1(void* v);
+
+void g() {
+ f1(0); // expected-warning{{zero as null pointer constant}}
+}
+
+// Warn on these too. Matches gcc and arguably makes sense.
+void* pp = (decltype(nullptr))0; // expected-warning{{zero as null pointer constant}}
+void* pp2 = static_cast<decltype(nullptr)>(0); // expected-warning{{zero as null pointer constant}}
OpenPOWER on IntegriCloud