summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema/warn-nullchar-nullptr.c
diff options
context:
space:
mode:
authorGeorge Burgess IV <george.burgess.iv@gmail.com>2019-08-05 22:15:40 +0000
committerGeorge Burgess IV <george.burgess.iv@gmail.com>2019-08-05 22:15:40 +0000
commitf708f0a2430f3a50b8836f4bd5510169dea359eb (patch)
treedcfa191421f4caa3b48c13266d8deef7c764b47f /clang/test/Sema/warn-nullchar-nullptr.c
parentdcdbe6515b21e0f210d087536c6fee74cb9fe37e (diff)
downloadbcm5719-llvm-f708f0a2430f3a50b8836f4bd5510169dea359eb.tar.gz
bcm5719-llvm-f708f0a2430f3a50b8836f4bd5510169dea359eb.zip
[Sema] Add -Wpointer-compare
This patch adds a warning that diagnoses comparisons of pointers to '\0'. This is often indicative of a bug (e.g. the user might've forgotten to dereference the pointer). Patch by Elaina Guan! Differential Revision: https://reviews.llvm.org/D65595 llvm-svn: 367940
Diffstat (limited to 'clang/test/Sema/warn-nullchar-nullptr.c')
-rw-r--r--clang/test/Sema/warn-nullchar-nullptr.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/clang/test/Sema/warn-nullchar-nullptr.c b/clang/test/Sema/warn-nullchar-nullptr.c
new file mode 100644
index 00000000000..36a126a0433
--- /dev/null
+++ b/clang/test/Sema/warn-nullchar-nullptr.c
@@ -0,0 +1,49 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
+
+int test1(int *a) {
+ return a == '\0'; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+int test2(int *a) {
+ return '\0' == a; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+int test3(int *a) {
+ return a == L'\0'; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+int test4(int *a) {
+ return a == u'\0'; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+int test5(int *a) {
+ return a == U'\0'; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+int test6(int *a) {
+ return a == (char)0; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+typedef char my_char;
+int test7(int *a) {
+ return a == (my_char)0;
+ // expected-warning@-1 {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+int test8(int *a) {
+ return a != '\0'; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to (void *)0?}}
+}
+
+#define NULL (void *)0
+int test9(int *a) {
+ return a == '\0'; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to NULL?}}
+}
+
+#define MYCHAR char
+int test10(int *a) {
+ return a == (MYCHAR)0; // expected-warning {{comparing a pointer to a null character constant; did you mean to compare to NULL?}}
+}
+
+int test11(int *a) {
+ return a > '\0';
+}
OpenPOWER on IntegriCloud