From: Argyrios Kyrtzidis Date: Sun, 2 Feb 2014 05:26:43 +0000 (+0000) Subject: [Sema] Follow-up on r200521 for the -Wnon-literal-null-conversion warning and revert... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2ba73adddbadd823e56f8404679cfb3db6d1bc3d;p=clang [Sema] Follow-up on r200521 for the -Wnon-literal-null-conversion warning and revert its behavior for C++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200622 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index e4b670dae7..c921129261 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -3061,6 +3061,9 @@ Expr::isNullPointerConstant(ASTContext &Ctx, Pointee->isVoidType() && // to void* CE->getSubExpr()->getType()->isIntegerType()) // from int. return CE->getSubExpr()->isNullPointerConstant(Ctx, NPC); + // Or an integer cast. + } else if (CE->getType()->isIntegerType()) { + return CE->getSubExpr()->isNullPointerConstant(Ctx, NPC); } } } else if (const ImplicitCastExpr *ICE = dyn_cast(this)) { diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp index 9d70d9f3e4..8e52e620a7 100644 --- a/lib/Sema/SemaOverload.cpp +++ b/lib/Sema/SemaOverload.cpp @@ -2622,19 +2622,6 @@ bool Sema::FunctionParamTypesAreEqual(const FunctionProtoType *OldType, return true; } -static Expr *ignoreIntegerCasts(Expr *E) { - while (true) { - if (ExplicitCastExpr *ECE = dyn_cast(E)) { - if (ECE->getType()->isIntegerType()) { - E = ECE->getSubExpr(); - continue; - } - } - - return E; - } -} - /// CheckPointerConversion - Check the pointer conversion from the /// expression From to the type ToType. This routine checks for /// ambiguous or inaccessible derived-to-base pointer @@ -2651,8 +2638,7 @@ bool Sema::CheckPointerConversion(Expr *From, QualType ToType, Kind = CK_BitCast; if (!IsCStyleOrFunctionalCast && !FromType->isAnyPointerType() && - ignoreIntegerCasts(From)-> - isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == + From->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull) == Expr::NPCK_ZeroExpression) { if (Context.hasSameUnqualifiedType(From->getType(), Context.BoolTy)) DiagRuntimeBehavior(From->getExprLoc(), From,