From: Douglas Gregor Date: Sat, 7 Aug 2010 13:36:37 +0000 (+0000) Subject: Integral-to-pointer conversions are not always null -> member pointer X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=443c21266f189ed48c32cadf72c463e9b992b3eb;p=clang Integral-to-pointer conversions are not always null -> member pointer conversions. Fixes PR7443. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110519 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 920c235945..96ac69c7ff 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -5598,13 +5598,19 @@ QualType Sema::CheckCompareOperands(Expr *&lex, Expr *&rex, SourceLocation Loc, if (RHSIsNull && (lType->isPointerType() || (!isRelational && lType->isMemberPointerType()))) { - ImpCastExprToType(rex, lType, CastExpr::CK_NullToMemberPointer); + ImpCastExprToType(rex, lType, + lType->isMemberPointerType() + ? CastExpr::CK_NullToMemberPointer + : CastExpr::CK_IntegralToPointer); return ResultTy; } if (LHSIsNull && (rType->isPointerType() || (!isRelational && rType->isMemberPointerType()))) { - ImpCastExprToType(lex, rType, CastExpr::CK_NullToMemberPointer); + ImpCastExprToType(lex, rType, + rType->isMemberPointerType() + ? CastExpr::CK_NullToMemberPointer + : CastExpr::CK_IntegralToPointer); return ResultTy; }