diff --git a/clang/AST/Expr.cpp b/clang/AST/Expr.cpp index 5167d4e109b3..535e1ef786f1 100644 --- a/clang/AST/Expr.cpp +++ b/clang/AST/Expr.cpp @@ -302,8 +302,6 @@ Expr::isLvalueResult Expr::isLvalue() const { if (cast(this)->containsDuplicateElements()) return LV_DuplicateVectorComponents; return LV_Valid; - case ImplicitCastExprClass: // A side-effect of our implementation. - return cast(this)->getSubExpr()->isLvalue(); default: break; } diff --git a/clang/Sema/SemaExpr.cpp b/clang/Sema/SemaExpr.cpp index a86a25525646..7666ad0474d4 100644 --- a/clang/Sema/SemaExpr.cpp +++ b/clang/Sema/SemaExpr.cpp @@ -765,9 +765,10 @@ void Sema::UsualUnaryConversions(Expr *&expr) { /// responsible for emitting appropriate error diagnostics. QualType Sema::UsualArithmeticConversions(Expr *&lhsExpr, Expr *&rhsExpr, bool isCompAssign) { - UsualUnaryConversions(lhsExpr); - UsualUnaryConversions(rhsExpr); - + if (!isCompAssign) { + UsualUnaryConversions(lhsExpr); + UsualUnaryConversions(rhsExpr); + } QualType lhs = lhsExpr->getType(); QualType rhs = rhsExpr->getType();