summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2014-11-11 19:59:16 +0000
committerFariborz Jahanian <fjahanian@apple.com>2014-11-11 19:59:16 +0000
commitc5fd4844da5233d514a43762d1670a912d7ce3ac (patch)
treeda6e7139c3ace3f9bc837af0d7b0f96e310f9a68 /clang/lib/Sema/SemaChecking.cpp
parent944547deab183814b199018a7389df91cd384cdb (diff)
downloadbcm5719-llvm-c5fd4844da5233d514a43762d1670a912d7ce3ac.tar.gz
bcm5719-llvm-c5fd4844da5233d514a43762d1670a912d7ce3ac.zip
Patch to warn when logical evaluation of operand evalutes to a true value;
That this is a c-only patch. c++ already has this warning. This addresses rdar://18716393 llvm-svn: 221702
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r--clang/lib/Sema/SemaChecking.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index ea4f3476b6c..fe47bfb12e9 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -6748,6 +6748,17 @@ void Sema::DiagnoseAlwaysNonNullPointer(Expr *E,
<< FixItHint::CreateInsertion(getLocForEndOfToken(E->getLocEnd()), "()");
}
+void Sema::CheckAlwaysNonNullPointer(Expr *OrigExpr) {
+ if (const UnaryOperator *U = dyn_cast<UnaryOperator>(OrigExpr))
+ if (U->getOpcode() == UO_LNot)
+ return CheckAlwaysNonNullPointer(U->getSubExpr());
+
+ Expr *E = OrigExpr->IgnoreParenImpCasts();
+ QualType Source = E->getType();
+ if (Source->isPointerType() || Source->canDecayToPointerType())
+ DiagnoseAlwaysNonNullPointer(E, Expr::NPCK_NotNull, /*IsEqual*/ false,
+ SourceRange());
+}
/// Diagnoses "dangerous" implicit conversions within the given
/// expression (which is a full expression). Implements -Wconversion
OpenPOWER on IntegriCloud