diff options
| -rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 8 | ||||
| -rw-r--r-- | clang/test/Analysis/reference.cpp | 2 | 
2 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 919ef06957c..1b08aa2159d 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -2324,12 +2324,14 @@ Sema::PerformImplicitConversion(Expr *From, QualType ToType,      // Nothing to do.      break; -  case ICK_Lvalue_To_Rvalue: +  case ICK_Lvalue_To_Rvalue: {      assert(From->getObjectKind() != OK_ObjCProperty);      FromType = FromType.getUnqualifiedType(); -    From = ImplicitCastExpr::Create(Context, FromType, CK_LValueToRValue, -                                    From, 0, VK_RValue); +    ExprResult FromRes = DefaultLvalueConversion(From); +    assert(!FromRes.isInvalid() && "Can't perform deduced conversion?!"); +    From = FromRes.take();      break; +  }    case ICK_Array_To_Pointer:      FromType = Context.getArrayDecayedType(FromType); diff --git a/clang/test/Analysis/reference.cpp b/clang/test/Analysis/reference.cpp index c7912f4f029..5897e682884 100644 --- a/clang/test/Analysis/reference.cpp +++ b/clang/test/Analysis/reference.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,experimental.core -analyzer-store=region -analyzer-constraints=range -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,experimental.core -analyzer-store=region -analyzer-constraints=range -verify -Wno-null-dereference %s  // XFAIL  typedef typeof(sizeof(int)) size_t;  | 

