diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2011-04-09 07:32:05 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2011-04-09 07:32:05 +0000 |
commit | ffab873ed5f5094d459094e87480a3f01e892233 (patch) | |
tree | a7fe499a4a181fa5570ee1e576018d090597f1fd /clang/lib/Sema/SemaOverload.cpp | |
parent | 88974f4625efcb5ba3b108014ee9d6ded5ddc25f (diff) | |
download | bcm5719-llvm-ffab873ed5f5094d459094e87480a3f01e892233.tar.gz bcm5719-llvm-ffab873ed5f5094d459094e87480a3f01e892233.zip |
Add support for warning on general null pointer expressions of boolean
type rather than just the literal 'false'. This begins fixing PR9612,
but the message is now wrong. WIP, the cleanup of the messaging is next.
llvm-svn: 129204
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 3212c36b9ab..905b555381a 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -1982,11 +1982,11 @@ bool Sema::CheckPointerConversion(Expr *From, QualType ToType, Kind = CK_BitCast; - if (CXXBoolLiteralExpr* LitBool - = dyn_cast<CXXBoolLiteralExpr>(From->IgnoreParens())) - if (!IsCStyleOrFunctionalCast && LitBool->getValue() == false) - DiagRuntimeBehavior(LitBool->getExprLoc(), From, - PDiag(diag::warn_init_pointer_from_false) << ToType); + if (!IsCStyleOrFunctionalCast && + Context.hasSameUnqualifiedType(From->getType(), Context.BoolTy) && + From->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull)) + DiagRuntimeBehavior(From->getExprLoc(), From, + PDiag(diag::warn_init_pointer_from_false) << ToType); if (const PointerType *FromPtrType = FromType->getAs<PointerType>()) if (const PointerType *ToPtrType = ToType->getAs<PointerType>()) { |