diff options
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index 5ddf94597bb..be87a42a3cf 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -1014,9 +1014,13 @@ ExprResult Sema::BuildInstanceMessage(Expr *Receiver,          if (ReceiverType->isPointerType())            ImpCastExprToType(Receiver, Context.getObjCIdType(),                               CK_BitCast); -        else +        else { +          // TODO: specialized warning on null receivers? +          bool IsNull = Receiver->isNullPointerConstant(Context, +                                              Expr::NPC_ValueDependentIsNull);            ImpCastExprToType(Receiver, Context.getObjCIdType(), -                            CK_IntegralToPointer); +                            IsNull ? CK_NullToPointer : CK_IntegralToPointer); +        }          ReceiverType = Receiver->getType();        }         else if (getLangOptions().CPlusPlus && | 

