summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-09-01 19:57:52 +0000
committerTed Kremenek <kremenek@apple.com>2008-09-01 19:57:52 +0000
commitc4f6d90ba1973853295737b5ba179ee8ae4db37a (patch)
tree4c64ee5348675a294e9b26292b3ca77e8c2c603a /clang/test
parent2c5208c59fcdae2e47fe8f98e6506bb098ea2005 (diff)
downloadbcm5719-llvm-c4f6d90ba1973853295737b5ba179ee8ae4db37a.tar.gz
bcm5719-llvm-c4f6d90ba1973853295737b5ba179ee8ae4db37a.zip
Tidy up sema processing of attribute "nonull":
- warn about nonnull being applied to functions with no pointer arguments - continue processing argument list in the attribute when we encounter a non-pointer parameter being marked as nonnull - when no argument list is specified, only mark pointers as nonnull. This fixes PR 2732 and radar 6188814. llvm-svn: 55610
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Analysis/null-deref-ps.c7
-rw-r--r--clang/test/Sema/nonnull.c2
2 files changed, 5 insertions, 4 deletions
diff --git a/clang/test/Analysis/null-deref-ps.c b/clang/test/Analysis/null-deref-ps.c
index 92e8daa57e2..06f67da45a6 100644
--- a/clang/test/Analysis/null-deref-ps.c
+++ b/clang/test/Analysis/null-deref-ps.c
@@ -56,11 +56,12 @@ int f5() {
return s[0]; // no-warning
}
-int bar(int* p) __attribute__((nonnull));
+int bar(int* p, int q) __attribute__((nonnull));
int f6(int *p) {
- return !p ? bar(p) : *p; // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
-}
+ return !p ? bar(p, 1) // expected-warning {{Null pointer passed as an argument to a 'nonnull' parameter}}
+ : bar(p, 0); // no-warning
+}
int* qux();
diff --git a/clang/test/Sema/nonnull.c b/clang/test/Sema/nonnull.c
index f8a2a0ed788..9a64ce4320b 100644
--- a/clang/test/Sema/nonnull.c
+++ b/clang/test/Sema/nonnull.c
@@ -1,6 +1,6 @@
// RUN: clang -fsyntax-only -verify %s
-int f1(int x) __attribute__((nonnull));
+int f1(int x) __attribute__((nonnull)); // expected-warning{{'nonnull' attribute applied to function with no pointer arguments}}
int f2(int *x) __attribute__ ((nonnull (1)));
int f3(int *x) __attribute__ ((nonnull (0))); // expected-error {{'nonnull' attribute parameter 1 is out of bounds}}
int f4(int *x, int *y) __attribute__ ((nonnull (1,2)));
OpenPOWER on IntegriCloud