]> granicus.if.org Git - clang/commitdiff
[Sema] Follow-up on r200521 for the -Wnon-literal-null-conversion warning and revert...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sun, 2 Feb 2014 05:26:43 +0000 (05:26 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Sun, 2 Feb 2014 05:26:43 +0000 (05:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200622 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/Expr.cpp
lib/Sema/SemaOverload.cpp

index e4b670dae7a3601f557df4e10372f736033c2c76..c921129261aea76c53cbcdac2419bc923093dd3c 100644 (file)
@@ -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<ImplicitCastExpr>(this)) {
index 9d70d9f3e48f9193f736e8fbf5b322e8e8ad7dde..8e52e620a775500a2217b9915a42c26478dd6269 100644 (file)
@@ -2622,19 +2622,6 @@ bool Sema::FunctionParamTypesAreEqual(const FunctionProtoType *OldType,
   return true;
 }
 
-static Expr *ignoreIntegerCasts(Expr *E) {
-  while (true) {
-    if (ExplicitCastExpr *ECE = dyn_cast<ExplicitCastExpr>(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,