summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-08-07 13:36:37 +0000
committerDouglas Gregor <dgregor@apple.com>2010-08-07 13:36:37 +0000
commitf58ff32c1641394f5872ca885707444f2f452ba5 (patch)
tree70d7312d324bf7ca432ffe7164b905b3ba4051a3 /clang/lib
parenta7d0ccfe7fdb7d67fa4d0397aea2cd319e18d3d5 (diff)
downloadbcm5719-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.cpp10
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;
}
OpenPOWER on IntegriCloud