]> granicus.if.org Git - clang/commitdiff
Integral-to-pointer conversions are not always null -> member pointer
authorDouglas Gregor <dgregor@apple.com>
Sat, 7 Aug 2010 13:36:37 +0000 (13:36 +0000)
committerDouglas Gregor <dgregor@apple.com>
Sat, 7 Aug 2010 13:36:37 +0000 (13:36 +0000)
conversions. Fixes PR7443.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110519 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExpr.cpp

index 920c235945ccfc52d57f1fcbe5978e5e6c62780a..96ac69c7ff50e94d46a3bee9919020076b90baf6 100644 (file)
@@ -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;
     }