diff options
author | Richard Trieu <rtrieu@google.com> | 2014-02-26 02:36:06 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2014-02-26 02:36:06 +0000 |
commit | 3bb8b56a5d90c535e7dc466f924d00ce798c28e0 (patch) | |
tree | 643e7740ab5e1fb92239f642327a28a9052c8490 /clang/test/Analysis/casts.c | |
parent | f9be75f538f4712acf98cde444e1176ce775b806 (diff) | |
download | bcm5719-llvm-3bb8b56a5d90c535e7dc466f924d00ce798c28e0.tar.gz bcm5719-llvm-3bb8b56a5d90c535e7dc466f924d00ce798c28e0.zip |
PR16074, implement warnings to catch pointer to boolean true and pointer to
null comparison when the pointer is known to be non-null.
This catches the array to pointer decay, function to pointer decay and
address of variables. This does not catch address of function since this
has been previously used to silence a warning.
Pointer to bool conversion is under -Wbool-conversion.
Pointer to null comparison is under -Wtautological-pointer-compare, a sub-group
of -Wtautological-compare.
void foo() {
int arr[5];
int x;
// warn on these conditionals
if (foo);
if (arr);
if (&x);
if (foo == null);
if (arr == null);
if (&x == null);
if (&foo); // no warning
}
llvm-svn: 202216
Diffstat (limited to 'clang/test/Analysis/casts.c')
-rw-r--r-- | clang/test/Analysis/casts.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/test/Analysis/casts.c b/clang/test/Analysis/casts.c index 3e2f8077ede..42c05beb594 100644 --- a/clang/test/Analysis/casts.c +++ b/clang/test/Analysis/casts.c @@ -110,7 +110,8 @@ void castsToBool() { clang_analyzer_eval(symbolicPointer); // expected-warning{{TRUE}} int localInt; - clang_analyzer_eval(&localInt); // expected-warning{{TRUE}} + int* ptr = &localInt; + clang_analyzer_eval(ptr); // expected-warning{{TRUE}} clang_analyzer_eval(&castsToBool); // expected-warning{{TRUE}} clang_analyzer_eval("abc"); // expected-warning{{TRUE}} |