diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-08-07 13:36:37 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-08-07 13:36:37 +0000 |
| commit | f58ff32c1641394f5872ca885707444f2f452ba5 (patch) | |
| tree | 70d7312d324bf7ca432ffe7164b905b3ba4051a3 /clang/lib | |
| parent | a7d0ccfe7fdb7d67fa4d0397aea2cd319e18d3d5 (diff) | |
| download | bcm5719-llvm-f58ff32c1641394f5872ca885707444f2f452ba5.tar.gz bcm5719-llvm-f58ff32c1641394f5872ca885707444f2f452ba5.zip | |
Integral-to-pointer conversions are not always null -> member pointer
conversions. Fixes PR7443.
llvm-svn: 110519
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 920c235945c..96ac69c7ff5 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/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; } |

