forked from OSchip/llvm-project
Allow comparison between block pointers and NULL pointer
constants. Fixes PR10145. llvm-svn: 133179
This commit is contained in:
parent
5fc8b77f83
commit
3e85c9c561
|
@ -7772,7 +7772,8 @@ QualType Sema::CheckCompareOperands(ExprResult &lex, ExprResult &rex, SourceLoca
|
||||||
// comparisons of member pointers to null pointer constants.
|
// comparisons of member pointers to null pointer constants.
|
||||||
if (RHSIsNull &&
|
if (RHSIsNull &&
|
||||||
((lType->isAnyPointerType() || lType->isNullPtrType()) ||
|
((lType->isAnyPointerType() || lType->isNullPtrType()) ||
|
||||||
(!isRelational && lType->isMemberPointerType()))) {
|
(!isRelational &&
|
||||||
|
(lType->isMemberPointerType() || lType->isBlockPointerType())))) {
|
||||||
rex = ImpCastExprToType(rex.take(), lType,
|
rex = ImpCastExprToType(rex.take(), lType,
|
||||||
lType->isMemberPointerType()
|
lType->isMemberPointerType()
|
||||||
? CK_NullToMemberPointer
|
? CK_NullToMemberPointer
|
||||||
|
@ -7781,7 +7782,8 @@ QualType Sema::CheckCompareOperands(ExprResult &lex, ExprResult &rex, SourceLoca
|
||||||
}
|
}
|
||||||
if (LHSIsNull &&
|
if (LHSIsNull &&
|
||||||
((rType->isAnyPointerType() || rType->isNullPtrType()) ||
|
((rType->isAnyPointerType() || rType->isNullPtrType()) ||
|
||||||
(!isRelational && rType->isMemberPointerType()))) {
|
(!isRelational &&
|
||||||
|
(rType->isMemberPointerType() || rType->isBlockPointerType())))) {
|
||||||
lex = ImpCastExprToType(lex.take(), rType,
|
lex = ImpCastExprToType(lex.take(), rType,
|
||||||
rType->isMemberPointerType()
|
rType->isMemberPointerType()
|
||||||
? CK_NullToMemberPointer
|
? CK_NullToMemberPointer
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
|
// RUN: %clang_cc1 -std=c++0x -fblocks -fsyntax-only -verify %s
|
||||||
|
|
||||||
@interface A
|
@interface A
|
||||||
@end
|
@end
|
||||||
|
@ -11,3 +11,6 @@ void comparisons(A *a) {
|
||||||
void assignment(A *a) {
|
void assignment(A *a) {
|
||||||
a = nullptr;
|
a = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int PR10145a = (void(^)())0 == nullptr;
|
||||||
|
int PR10145b = nullptr == (void(^)())0;
|
||||||
|
|
Loading…
Reference in New Issue